在 JavaScript 中,不向某些函数传递某些参数是有效的。他们被视为undefined
这对于许多函数的逻辑至关重要。
我读过这个名为“参数不足”的错误。标准吗?它为何存在?
function foo(a) {
// yada yada
}
try {
foo();
} catch (e) {
console.log(e.name);
}
^ 这段代码在 Firefox 和 Chrome 上没有抛出任何异常。
我读过这个名为“参数不足”的错误。
这不是标准的语言级别错误;这是一个API级错误。也就是说,JavaScript 通常不关心传递给函数的实际参数的数量是否与函数的形式参数匹配。然而,用 JavaScript 编写的特定 API 可能会关心参数的数量。
例如,火狐浏览器的addEventListener
函数(Firefox 的 DOM API 的一部分)可能会抛出“参数不足”错误,因为addEventListener
被定义为期望至少有两个参数。
您可以使用以下命令测试传递给函数的实际参数的数量arguments object https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments:
function foo(a, b) {
if(arguments.length < 2) {
throw TypeError("Not enough arguments; two expected");
}
if(arguments.length > 2) {
throw TypeError("Too many arguments; two expected");
}
if(arguments.length > 10) {
throw TypeError("Way too many arguments; did you even read the docs?");
}
}
如果您希望参数不匹配导致错误,您的代码必须检测参数的数量并主动抛出错误。这个版本的foo
will扔一个TypeError
陷入你的catch
block.
但请记住,该错误与形式参数的数量无关foo
。我可以把它定义为function foo(a,b,c)
,但仍然通过检查强制执行两个参数的要求arguments
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)