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真的很有趣!

相关阅读

有话想说?请留下评论吧~~如果喜欢我的blog,欢迎订阅~~

评论

还没有任何评论。

留下评论

(必需)

(必需)