声明这样的数组之间的真正区别是什么:
var myArray = new Array();
Run Code Online (Sandbox Code Playgroud)
和
var myArray = [];
Run Code Online (Sandbox Code Playgroud) 在另一个问题中,用户指出该new关键字使用起来很危险,并提出了一种不使用的对象创建解决方案new.我不相信这是真的,主要是因为我使用了Prototype,Scriptaculous和其他优秀的JavaScript库,并且每个人都使用了new关键字.
尽管如此,昨天我在YUI剧院观看道格拉斯·克罗克福德的演讲,他说的完全一样,他new在代码中不再使用关键字(Crockford on JavaScript - Act III:Function the Ultimate - 50:23分钟).
使用new关键字"不好" 吗?使用它有哪些优缺点?
我运行此代码并得到以下结果.我很想知道为什么[]更快?
console.time('using[]')
for(var i=0; i<200000; i++){var arr = []};
console.timeEnd('using[]')
console.time('using new')
for(var i=0; i<200000; i++){var arr = new Array};
console.timeEnd('using new')
Run Code Online (Sandbox Code Playgroud)
[]:299msnew:363ms感谢Raynos,这里是此代码的基准,以及一些更可行的方法来定义变量.

在JSLint中,它警告说
var x = new Array();
Run Code Online (Sandbox Code Playgroud)
(这不是一个真正的变量名称)应该是
var result = [];
Run Code Online (Sandbox Code Playgroud)
第一种语法有什么问题?这个建议背后的原因是什么?
我不明白为什么当我使用JavaScript文件运行JSLint时收到错误消息.
os_map = {}; Problem at line 28 character 36: Use the array literal notation [].如果我在JSLint中运行此代码,我会收到消息var .JSLint的选项如下.
/*jslint onevar: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */
Run Code Online (Sandbox Code Playgroud)
声明对象(,它{})应该没问题,但JSLint建议使用空数组(,这是[])
:我找到了答案.我错了.这没什么不对var os_map = {}.代码显示在错误消息中,因为我没有使用"require strict";.我收到错误消息错误.谢谢回答我的问题.
是
var myCars=new Array("Saab","Volvo","BMW");
Run Code Online (Sandbox Code Playgroud)
和
var myCars=["Saab","Volvo","BMW"];
Run Code Online (Sandbox Code Playgroud)
完全相同的 ?