Javascript 检查参数

Javascript 检查参数,javascript,arguments,Javascript,Arguments,这两种检查参数的方法有什么区别 function foo(a, b) { this.a=a; this.b=b; } 使用: if (arguments.length === 1) {} 或 b==未定义的很可能是您想要的 如果用什么术语检查foo()或f(1,2,3),第一个将失败?该函数是否可以使用默认值/bahavior继续运行,或者在缺少某些内容时是否应该停止 通常情况下,您可以选择默认行为,但这取决于函数的用途: function foo(a,b){ a = a

这两种检查参数的方法有什么区别

function foo(a, b) {
    this.a=a;
    this.b=b;
}
使用:

if (arguments.length === 1) {}


b==未定义的
很可能是您想要的


如果用什么术语检查foo()或f(1,2,3),第一个将失败?该函数是否可以使用默认值/bahavior继续运行,或者在缺少某些内容时是否应该停止

通常情况下,您可以选择默认行为,但这取决于函数的用途:

function foo(a,b){
  a = a || {};
  b = b || 5;
  // continue
}
如果要查找缺少的内容,可以选中
undefined
并暂停:

function foo(a){
  if (a === undefined){
    return false;
  }
}
简言之,这完全取决于您以及您希望函数在缺少变量或变量分配不正确的情况下如何继续。另一个例子是:

function bar(b){
  if (typeof b !== 'function'){
    b = function(){};
  }
  // continue on...
}

如果您想检查强制参数,我将使用
arguments.length
作为第一步。如果要检查可选参数,通常模式为:

function foo(a,b){
    this.a = a || "foo";
    // etc
}
请注意,只有当参数不能是“falsy”值(因此,空字符串、零、null、未定义、false、NaN)时,这才有效。例如,如果将空字符串作为
a
参数传递,则将有foo。如果你只想考虑<代码>未定义作为一个考虑参数可选的值,那么你必须做一些类似的事情:

function foo(a){
    this.a = a === undefined ? "foo" : a;
    // etc
}

如果要同时考虑空值和未定义参数以及可选参数,则可以有:

function foo(a){
    this.a = a == undefined ? "foo" : a;
    // etc
}
当然,您也可以使用运算符
typeof
。例如,您希望
a
只能是字符串:

function foo(a) {
    this.a = typeof a === "string" ? a : "";
    // etc
}
您还可以强制
a
始终为字符串,在最坏的情况下,将是给定的非字符串值的字符串版本(也未定义):


更复杂的情况下,有些实用程序函数可以为您进行所有检查,其中您提到了所需的参数、可选参数、默认值等。

您想检查它的原因是什么。。。我认为没有必要检查参数,当你知道什么将进入函数。。。如果传递给函数的参数数目未知,最好对照参数进行检查
function foo(a) {
    this.a = typeof a === "string" ? a : "";
    // etc
}
function foo(a) {
    this.a = String(a);
    // etc
}