数组对象与数组文字 - 性能JavaScript

时间:2013-02-12 13:46:15

标签: javascript

今天我正在浏览stackoverflow中的一些帖子,这个回复刚刚弹出。 https://stackoverflow.com/a/2280350/548591

https://stackoverflow.com/a/11513602/548591

var name = [];
var name = new Array();

在性能方面,文字比初始化new Array Object更好。

现在正在阅读这篇文章,只是想更新。

http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/

3 个答案:

答案 0 :(得分:0)

从我自己直接实现ECMA Grammar到制作解析器,我可以告诉你:

直接解析数组文字[]然后转换为数组对象,而new Array()首先解析为“表达式”,然后检查新关键字,然后检查要创建的内容(在这种情况下为Array),然后进行评估。

我无法确切地告诉您使用new Array()确实损失了多少性能,它因Javascript引擎而异。例如,V8(Chrome)会预编译代码以对其进行优化,因此无论如何它都可以转换为文字[],具体取决于它的工作原理。

最简单的方法是创建一个测试函数,创建几十万个数组,并分别使用文字声明或构造函数初始化来测量循环的时间。

答案 1 :(得分:0)

是的,根据测试,初始化[]比使用new Array要快得多。除此之外,文字版本更具可读性 这个has already been asked

答案 2 :(得分:0)

根据浏览器的不同, Literals appear to be up to twice as fast 。也就是说,在存在显着差异的浏览器中。