【发布时间】:2016-07-05 20:55:21
【问题描述】:
我不明白 ... 表示法到底是做什么的。
我用 Babel 尝试了一个简单的例子来理解它(view the example),但似乎:
ES6 语法
let myArray = [1, 2, 3, ...18];
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]);// undefined
console.log(myArray.length); // 3
与此 ES5 语法相同:
"use strict";
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var myArray = [1, 2, 3].concat(_toConsumableArray(18));
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]); // undefined
console.log(myArray.length); // 3
但是:这段代码有什么作用?因为输出(console.log)和这段代码(ES5)中的一样:
var myArray = [1,2,3];
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]);// undefined
console.log(myArray.length); // 3
...18 表示法是什么意思?
【问题讨论】:
-
没有任何意义,因为 spread operator 不适用于数字。也许你想要
...'18',也就是'1', '8' -
@WashingtonGuedes 或
...[18]! -
您对这段代码有什么期望? (以及为什么...)
-
或者,
...Array(18).keys()? -
然后你看到了一个坏的例子。这根本不是操作员所做的。
标签: javascript arrays ecmascript-6