Javascript性能考虑。点运算符比下标表示法更快吗?

时间:2011-09-03 08:13:41

标签: javascript performance

点运算符比下标表示法更快吗?

var obj = {x: '5'};
obj.x = 'some value';
obj['x'] = 'some value';

2 个答案:

答案 0 :(得分:6)

没有令人难以置信的担忧。 windoweval之后的变量显着变慢。

http://jsperf.com/dot-vs-square-bracket/5

答案 1 :(得分:3)

这可能是过时的信息,但它是一个影响至少旧版Safari版本的声明。 来自O'Reilly的Writing Efficient JavaScript

  

对于大多数浏览器,使用点几乎没有区别   对象属性访问(data.count)和括号表示法的表示法   (数据[ “计数”])。一个例外是Safari,其中括号表示法   比点符号慢得多。这甚至适用于此   Safari 4及更高版本使用Nitro JavaScript引擎。

看起来http://jsperf.com/已被删除 - 它显示为Website Disabled,但是使用Qt4中的嵌入式WebKit引擎,看起来这个陈述是正确的,使用此测试:

var t = new Date().getTime();
var x = { c: 123 };

for (var i = 0; i < 5000000; i++)
    x['c'] += 2;

document.write(( new Date().getTime() - t ) + '; value ' + x.c);

var t = new Date().getTime();
var x = { c: 123 };

for (var i = 0; i < 5000000; i++)
    x.c += 2;

document.write(( new Date().getTime() - t ) + '; value ' + x.c);

使用x['c']大约需要4秒钟,x.c运行大约3秒钟。 目前的Firefox和Chrome似乎没有区分这两者。