0
function bar(a, b, c, d, e, f) {

  alert(a, b, c, d, e, f)
}

function foo() {

  bar.apply(this, arguments);
}

foo(1, 2, 3, 4, 5, 6);

上面的代码是alerting 1,这是什么原因?

4

3 回答 3

3

alert函数只使用它接收到的第一个参数。

您的代码最终归结为:

alert(1, 2, 3, 4, 5, 6);

第二个和更多参数被忽略,因为内置函数对它们不做任何事情。

如果您希望它对它们做任何事情,则必须将它们连接成一个字符串。

function bar(a, b, c, d, e, f) {
    alert(Array.prototype.join.call(arguments, ''));
}
于 2013-04-12T06:48:28.757 回答
3

alert()函数只需要一个参数,因此它只会显示第一个参数。

如果你想显示它们,你需要将它们连接成一个字符串:

alert(a + "," + b + "," +c);
于 2013-04-12T06:48:46.503 回答
0

您可以将所有参数作为数组传递,例如:

    功能条(a,b,c,d,e,f){
    变量 k = [a,b,c,d,e,f];
    警报(k);
    }

    函数 foo() {
    bar.apply(this, arguments);
    }
    富(1、2、3、4、5、6);
于 2013-04-12T06:52:07.467 回答