为什么我们以这种方式使用[].join()
?
function printArgs() {
arguments.join = [].join;
var argStr = arguments.join(':');
alert( argStr );
}
printArgs(1, 2, 3);
答案 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