为什么我们在这里使用[] .join?

时间:2016-01-26 08:18:13

标签: javascript

为什么我们以这种方式使用[].join()

function printArgs() {
    arguments.join = [].join; 
    var argStr = arguments.join(':'); 
    alert( argStr );
}
printArgs(1, 2, 3);

2 个答案:

答案 0 :(得分:4)

因为arguments对象是类似于数组的对象,但它不是真正的数组,并且除了join之外它没有数组属性(例如示例中的.length)。因此,在您的代码中,您将.join方法从数组复制到arguments对象。

答案 1 :(得分:0)

argument对象是一个局部变量array like object,可用于所有函数。

所以arguments.join = [].join;正在创建一个新数组,你可以在其上使用js数组中可用的所有方法。

因此var argStr = arguments.join(':');将返回1:2:3

var argStr = arguments.join();      // assigns '1,2,3' to argStr 
var argStr = arguments.join(' + '); // assigns '1 + 2 + 3' to argStr
                          // ^ ^       Note empty space here & in assigned value
var argStr = arguments.join('');  // assigns 123 to argStr