在 JSLint 中,它警告说
var x = new Array();
(这不是一个真正的变量名)应该是
var result = [];
第一种语法有什么问题?该建议背后的原因是什么?
在 JSLint 中,它警告说
var x = new Array();
(这不是一个真正的变量名)应该是
var result = [];
第一种语法有什么问题?该建议背后的原因是什么?
使用[]
比使用更安全new Array()
,因为您实际上可以覆盖Array
JavaScript 中的值:
Array = function() { };
var x = new Array();
// x is now an Object instead of an Array.
换句话说,[]
是明确的。
克罗克福德不喜欢new
。因此,JSLint 希望您尽可能避免它。并且可以在不使用new
...的情况下创建一个新的数组对象。
似乎您可以获得不同的性能,具体取决于您使用的内容以及取决于浏览器或环境的目的:
http://jsperf.com/new-array-vs-literal/11 ( [1,.2] vs new Array(1,.2) ) the literal is way faster in this circumstance.
http://jsperf.com/new-array-vs-literal/7 ( new Array(500000) vs [].length(500000) ) new Array is faster in chrome v21 it seems for this test by about 7% or 30%) depending on what you do.
任何一种形式都没有错,但是您通常会看到尽可能使用的文字-
var s='' 并不比var s=new String()....
第一种语法本身没有问题。事实上,在w3schools上,它列出new Array()
了创建数组的方式。问题是这是“老方法”。“新方式”[]
更短,允许您初始化数组中的值,如["foo", "bar"]
. 大多数开发人员更喜欢[]
在new Array()
良好的风格方面。