为什么使用"new"创建一个被认为不好的Javascript数组?

Ste*_*obs 5 javascript arrays

W3学校说

这两个不同的语句都创建一个包含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]阵列.