W3 Schools says
These two different statements both create a new array containing 6
numbers:
var points = new Array(40, 100, 1, 5, 25, 10) // Bad
var points =[40, 100, 1, 5, 25, 10]; // Good
但没有解释为什么第一个不好。
据我了解,唯一的区别是第一个调用构造函数。谁能告诉我为什么第一个不好?
真正的原因是这个构造函数不一致。
var points = new Array(40)
创建一个大小为 40
且没有内容的数组
var points = new Array(40, 50)
创建一个包含 2 个元素的大小为 2 的数组。
使用起来更简单,更具可读性
var points = [40];
或
var points = [40, 50];
当你想构建一个数组时,也没有理由使用这个构造函数,只需使用一个文字数组,就像你使用文字数字一样。
仅当您想构建具有给定大小的空数组时才使用Array
构造函数(这种情况应该很少见)。
ES 2015 编辑:
由于这种不一致,ES2015 给我们带来了一个新的静态函数,Array.of
. Array.of(40)
生成 [40]
数组。