Javascript性能考虑.点运算符比下标符号快

Javascript performance consideration. Is dot operator faster than subscript notation?

本文关键字:下标 符号 运算符 点运算 性能 Javascript      更新时间:2023-09-26

点运算符比下标符号更快吗?

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

没有什么令人难以置信的。通过windoweval访问变量的速度明显较慢。

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

这可能是过时的信息,但它至少影响到较旧的Safari版本。选自O'Reilly的《高效编写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似乎没有区分这两者。