Node.js – 内联推送到数组

为什么这两个值不同?

var sliced = [1,2].slice(1); sliced.push(3); console.log(sliced); var sliced = [1,2].slice(1).push(3); console.log(sliced); 

也许这可以阐明为什么这不起作用:

 var result = process.argv.slice(1).push('xyz'); 

但是这样做:

 var result = process.argv.slice(1).concat('xyz'); 

.push返回值被推送到的数组的新长度,而不是它推到的数组的长度。

.push方法返回被推送到的数组的长度。 详情请看这里

.push按照MDN返回

调用该方法的对象的新的length属性。

所以即使你把5,6和7作为数组元素,它也会返回数组的长度

 var sliced = ([5,6,7].slice(1)).push(3); console.log(sliced); 

输出是3