美好的一天!
我偶然发现了一些我在JavaScript领域从未见过的东西,但我想这对于能够更好地了解语言的人来说很容易解释.下面我有以下功能:(代码取自本书:"JavaScript忍者的秘密")
function log() {
try {
console.log.apply(console, arguments);
}
catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call(arguments, " "));
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这个函数是用一个空参数列表定义的,但当我在本书后面看到他们实际上使用这样的函数时,我感到非常困惑......
var x = 213;
log(x); //Hmmm, I thought this function had an empty parameter list.
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下,为什么这个函数调用允许/可能?支持此功能的JS涉及哪些概念?提前谢谢,我很困惑.
最好的祝福,
Eri*_*ert 10
您可以根据需要使用错误数量的参数调用函数.多余的参数将被忽略; 缺少的参数将被赋予默认值.
从代码示例中可以看出,您可以访问实际使用"arguments"对象传递的参数.
JavaScript的一个设计原则是宽容而不是严格.如果有办法继续前进,JavaScript会继续前进.未能传递足够数量的参数在JavaScript中不会像C#那样被认为是致命的,其中一个设计原则是"通过在编译时失败给开发人员的注意带来可能的错误".