我在网上发现了一个javascript示例让我有点困惑.我对javascript很新,但对"传统"语言有很好的了解.当我尝试google时,我无法找到答案,所以我会在这里提出问题并希望有人可以帮助我.
从一个"类"执行以下代码:
this.foo.addListener("xType", this, this.boo);
Run Code Online (Sandbox Code Playgroud)
调用的函数如下所示:
//first argument (type:String) what kind of event
//second argument (type:Function) listener - listening function
addListener: function(kindOf, listener) {
Run Code Online (Sandbox Code Playgroud)
我不明白的是,参数的数量不匹配.当函数被调用时,使用3个参数即"xType",这和this.boo但在函数签名中只有2个参数,即kindOf和listener.这是一些javascript功能,你可以调用函数与一些其他数量的参数比函数中声明的?或者这段代码应该如何工作?
小智 23
这是一些javascript功能,你可以调用函数与一些其他数量的参数比函数中声明的?
这是对的.JavaScript不要求您调用具有与用于定义它的参数数量相同的参数的函数.
如果用太少的方法调用它,则缺少的值将具有特殊值undefined.如果你用太多的方法调用它,该函数将需要使用特殊的数组值arguments来获取它们.例如,
function alertMany() {
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}
alertMany("hello", "goodbye");
alertMany("hello", "hello again", "hello once more", "farewell");
alertMany()
Run Code Online (Sandbox Code Playgroud)
所有这些调用都会起作用,为每个参数显示一个警告框.