我不明白var foo = [true] .concat(Array.prototype.slice.call(arguments))是如何工作的,特别是[true]正在做什么?

时间:2017-04-23 19:58:22

标签: javascript

我正在查看var args = [true] .concat(Array.prototype.slice.call(arguments));我的理解是它试图将函数的参数添加到数组的末尾。但是我对语法[true]不熟悉,在数组中有true。它试图实现什么?如果存在数组则添加?如果不存在则创建一个数组,然后添加?

  extend: function extend(/* dest, source1, source2, ...*/) {
        var args = [true].concat(Array.prototype.slice.call(arguments));
        return copyInto.apply(this, args);
    },

1 个答案:

答案 0 :(得分:1)

[true]创建一个布尔元素的数组,该数组为真。

例如,这也是有效的:

[true, false, true]
[0,1,2]

[true] .concat(其他一些数组)返回一个数组,它是[true]和其他一些数组的串联

例如

[true].concat([true, false, false])

等于[true,true,false,false]