在JSLint中,它警告
var x = new Array();
(那不是真正的变量名)应该是
var result = [];
第一种语法有什么问题?这个建议背后的原因是什么?
答案 0 :(得分:69)
使用[]
比使用new Array()
更安全,因为您实际上可以在JavaScript中覆盖Array
的值:
Array = function() { };
var x = new Array();
// x is now an Object instead of an Array.
换句话说,[]
是明确的。
答案 1 :(得分:26)
Crockford doesn't like new
。因此,JSLint expects you to avoid it在可能的情况下。无需使用new
....
答案 2 :(得分:7)
根据您的使用情况以及取决于浏览器或环境的目的,您似乎可以获得不同的性能:
http://jsperf.com/new-array-vs-literal/11([1,.2] vs new array(1,.2))在这种情况下,文字更快。
http://jsperf.com/new-array-vs-literal/7(新阵列(500000)vs []。length(500000))新阵列在chrome v21中的速度更快,在此测试中看起来大约为7%或30%),具体取决于您的操作。 / p>
答案 3 :(得分:5)
这两种形式都没有错,但你通常会在任何可能的地方看到文字 -
var s =''不是更多正确而不是var s = new String()....
答案 4 :(得分:2)
第一种语法本身并没有错。事实上,在w3schools上,它列出了new Array()
作为创建数组的方法。问题是这是“老路”。 “新方法”[]
更短,并允许您初始化数组中的值,如["foo", "bar"]
中所示。大多数开发者在良好的风格方面更喜欢[]
到new Array()
。