Javascript中验证输入参数

javascript

Javascript的函数声明中的参数列表并不意味着什么……它们纯粹是为了方便访问这些参数而放在那里的,而并没有限制调用者怎么传参数,调用者想怎么传就怎么传,只要脚本不出错……

所有,有时候为了保证程序的健壮性,需要实现输入参数的验证和默认的输入参数。这几天学习的过程中恰好写了一些简单的解决方案,放在这里做备份。

首先是验证类型的合法性:

function validateType( obj, type) {
  if (!(obj instanceof type)) {
    throw new Error("Invalid type of the argument of " + arguments.callee.caller);
  }

  return true;
}

然后是验证参数值合法:

function validateValue(obj, vfunc) {
  validateType(vfunc, Function);  // vfunc must be Function object
  if (!vfunc(obj)) {
    throw new Error("Invalid value of the argument of " + arguments.callee.caller);
  }
}

再是默认参数,如果参数是undefined(也就是没有传参数),那么就使用指定的默认参数:

function setDefaultValue(param, defVal) {
  var undefined;
 
  if (undefined === param) {
    return defVal;
  } else {
    return param;
  }
}

OK,就这么多了。以后还可以再加,需要什么就做什么吧~
它们的用法很简单。例如函数add,假设传入的必须是正数,而且b可以不传,默认为10:

function add(a, b) {
  var adder = setDefaultValue(b, 10);

  validateType(a, Number);
  validateType(adder, Number);
  validateValue(a, function(n) {return n > 0 ? true: false;});
  validateValue(adder, function(n) {return n > 0 ? true: false;});

  return a + adder;
}

嗯,Javascript真的很有趣!

时间: 2024-11-08 22:18:44

Javascript中验证输入参数的相关文章

在JAVA程序中处理输入参数

在JAVA程序中处理输入参数 1 class Averager{ 2 public static void main(String[] args) { 3 int sum = 0; 4 5 if (args.length > 0) { 6 for (int i = 0; i < args.length; i++) { 7 sum += Integer.parseInt(args[i]); 8 } 9 System.out.println("Sum is: " +sum);

javascript中函数作为参数调用的方法_javascript技巧

本文实例讲述了javascript中函数作为参数调用的方法.分享给大家供大家参考.具体分析如下: 先来看示例: function Map(){ var obj = {}; this.put = function(key, value){ obj[key] = value; } this.eachMap = function(fn){ for(var attr in obj){ fn(attr, obj[attr]); } } } var m = new Map(); m.put('01', 'a

JavaScript中的动态参数

JavaScript中的函数参数是动态的,我们既可以一开始就定义好,也可以在函数体中进行重载. 我们可以利用 arguments 对象来管理动态参数. 下面举个例子: function doAdd() {            if (arguments.length == 0) {                alert("You must input at least one argument!");            } else if (arguments.length 

javascript中自定义函数参数添加默认值实现方法

最近在Codewars上面看到一道很好的题目,要求用JS写一个函数defaultArguments,用来给指定的函数的某些参数添加默认值.举例来说就是: // foo函数有一个参数,名为xvar foo_ = defaultArguments(foo, {x:3});// foo_是一个函数,调用它会返回foo函数的结果,同时x具有默认值3 下面是一个具体的例子: function add(a, b) {return a+b;} // 给add函数的参数b添加默认值3 var add_ = de

PowerShell函数使用正则表达式验证输入参数实例_PowerShell

本文介绍在自定义PowerShell函数时,输入的参数是否合法可以通过正则表达式来进行约束.正则表达式来约束输入参数,将使用ValidatePattern指令. 之前我们通过ValidateSet来作为参数的智能提示,其实它也起到了对参数输入合规性的检查.因为ValidateSet是规定了一个输入参数的范围,不在这个范围内的参数,一是不能智能提示,另外,即便是输入了,它也无法通过函数的输入参数合规性检查,从而程序无法继续执行. 那么既然ValidateSet是以一个集合的形式来检查输入参数,那么

javascript中获取地址栏参数比如 index.asp?id=xxx&amp;name=xxx

javascript 比如 index.asp?id=xxx&name=xxx 怎么用javascript怎么能取到id的name的值呢?方法一:<script>function getvalue(name){var str=window.location.search;if (str.indexOf(name)!=-1){var pos_start=str.indexOf(name)+name.length+1;var pos_end=str.indexOf("&&

javascript中验证大写字母、数字和中文

 本文为大家介绍下使用javascript验证大写字母小写字母,数字和中文,具体示例如下 代码如下: var reg = /^[u4E00-u9FA5]+$/; //验证中文  var cp=$("input[name='cpid']").val();  for(var i=0;i<cp.length;i++){  var cpp=cp.charAt(i);  if(!reg.test(cpp)||cpp.match(/^([A-Z])+$/)||cpp.match(/^d+$/

javascript中通过arguments参数伪装方法重载

 在很多面向对象的高级语言中,都有方法的重载.而javascript没有方法重载这个概念.但是我们可以通过arguments这个参数来伪装成函数的重载 在模拟之前我们先看一下代码: 代码如下: //表面上没有声明形式参数的函数 function fun() { alert("示例代码"); } fun("小明", 100, true);//自己写了三个实际参数 通过结果我们看到,即使我们声明函数的时候没有定义形式参数,在调用方法的时候,我们也是可以写实际参数的.(实

探讨JavaScript中的Rest参数和参数默认值_基础知识

Rest 参数 通常,我们需要创建一个可变参数的函数,可变参数是指函数可以接受任意数量的参数.例如,String.prototype.concat 可以接受任何数量的字符串作为参数.使用 Rest 参数,ES6 为我们提供一种新的方式来创建可变参数的函数. 我们来实现一个示例函数 containsAll,用于检查一个字符串中是否包含某些子字符串.例如,containsAll("banana", "b", "nan") 将返回true,contai