为什么警报(1,2,3,...)只显示1?

时间:2013-04-12 06:45:39

标签: javascript

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);

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

3 个答案:

答案 0 :(得分:3)

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

您的代码最终归结为:

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

第二个和其他参数被忽略,因为内置函数对它们没有任何作用。

如果您希望它对它们执行任何操作,则必须将它们连接成一个字符串。

function bar(a, b, c, d, e, f) {
    alert(Array.prototype.join.call(arguments, ''));
}

答案 1 :(得分:3)

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

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

alert(a + "," + b + "," +c);

答案 2 :(得分:0)

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


    function bar(a, b, c, d, e, f) {
    var k = [a,b,c,d,e,f];
    alert(k);
    }

    function foo() {
    bar.apply(this, arguments);
    }
    foo(1, 2, 3, 4, 5, 6);