JSLint和JSHint(在版本1.0.0之前)在遇到使用new操作符调用Array构造函数时,会抛出"Use the array literal notation []"的错误。下面是一个例子:
这个错误是为了强调潜在的危险以及不必要的、啰嗦的代码片段。在我们了解为什么上述代码会有潜在危险之前,下面是一个使用数组字面量重写的可以通过JSLint和JSHint检测的版本。注意,它显然更短:
由于Array构造器事实上只是全局对象的一个属性,它可以被重写。如果它被重写了的话,那么第一个例子就有可能会产生一个类型错误。例如,如果你运行了一些像Array = 50这样的代码,就会抛出一个类型错误,因为Array不再是一个函数了。
下面是一个将Array构造函数重写的例子。注意JSLint和JSHint都不知道发生了什么。因此,这是一个安全使用的方法并且完全禁用了Array构造函数:
在JSHint 1.0.0及以上版本中,这个警告变成了"The array literal notation [] is preferrable". 更多的细节可以在该页面中找到。