【发布时间】:2010-10-27 11:25:03
【问题描述】:
在 JSLint 中,它会发出警告
var x = new Array();
(那不是真正的变量名)应该是
var result = [];
第一种语法有什么问题?该建议背后的原因是什么?
【问题讨论】:
-
第一种语法没有问题。第二个更短。
标签: javascript jslint
在 JSLint 中,它会发出警告
var x = new Array();
(那不是真正的变量名)应该是
var result = [];
第一种语法有什么问题?该建议背后的原因是什么?
【问题讨论】:
标签: javascript jslint
使用[] 比使用new Array() 更安全,因为您实际上可以在JavaScript 中覆盖Array 的值:
Array = function() { };
var x = new Array();
// x is now an Object instead of an Array.
换句话说,[] 是明确的。
【讨论】:
Crockford doesn't like new。因此,尽可能JSLint expects you to avoid it。并且不使用new....也可以创建一个新的数组对象。
【讨论】:
根据浏览器或环境的不同,您似乎可以获得不同的性能:
http://jsperf.com/new-array-vs-literal/11 ( [1,.2] vs new Array(1,.2) ) 在这种情况下,文字要快得多。
http://jsperf.com/new-array-vs-literal/7 ( new Array(500000) vs [].length(500000) ) new Array 在 chrome v21 中速度更快,这个测试似乎快了 7% 或 30%),这取决于你做什么。
【讨论】:
这两种形式都没有问题,但您通常会看到尽可能使用文字-
var s='' 并不比 var s=new String()....更正确。
【讨论】:
第一种语法本身没有问题。事实上,在w3schools 上,它列出了new Array() 作为创建数组的方式。问题是这是“老方法”。 “新方式”[] 更短,允许您初始化数组中的值,如["foo", "bar"]。大多数开发者更喜欢[] 而不是new Array() 的良好风格。
【讨论】: