这两个不同的语句都创建了一个包含6的新数组 数字:
var points = new Array(40, 100, 1, 5, 25, 10) // Bad
var points =[40, 100, 1, 5, 25, 10]; // Good
但没有解释为什么第一个不好。
据我所知,唯一的区别是第一个调用构造函数。有人能告诉我为什么第一个是坏的?
答案 0 :(得分:17)
真正的原因是这个构造函数不一致。
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]
数组。