这两个不同的语句都创建一个包含6个数字的新数组:
var points = new Array(40, 100, 1, 5, 25, 10) // Bad
var points =[40, 100, 1, 5, 25, 10]; // Good
Run Code Online (Sandbox Code Playgroud)
但是没有解释为什么第一个是坏的.
据我所知,唯一的区别是第一个调用构造函数.有人能告诉我为什么第一个是坏的?
Den*_*ret 17
真正的原因是这个构造函数不一致.
var points = new Array(40)
Run Code Online (Sandbox Code Playgroud)
创建一个大小40而没有内容的数组
var points = new Array(40, 50)
Run Code Online (Sandbox Code Playgroud)
创建一个大小为2的数组,包含2个元素.
它使用起来更简单,更易读
var points = [40];
Run Code Online (Sandbox Code Playgroud)
要么
var points = [40, 50];
Run Code Online (Sandbox Code Playgroud)
当你想构建一个数组时,也没有理由使用这个构造函数,只需使用一个文字数组,就像你使用文字数字一样.
只有Array在想要构建具有给定大小的空数组时才使用构造函数(这应该是非常罕见的).
ES 2015编辑:
由于这种不一致,ES2015为我们带来了一个新的静态功能Array.of.Array.of(40)制作[40]阵列.