我正在努力加速一些使用许多以下结构的旧JavaScript代码:
var obj = {
attr1: value,
attr2: value2,
...
attrN: valueN
};
someFunction(obj['attr1']);
JSHint给我以下建议:
['attr1'] is better written in dot notation.
因此,它更喜欢
obj.attr1
而不是obj['attr1']
。我理解此警告的美学原因(解释为here),但是哪种表示法更快?我认为前者会更有效,因为后者涉及字符串文字的转换,但是我只是猜测来支持这一点。您能提供的任何帮助将不胜感激。
最佳答案
他们差不多。请参阅以下两个jsperf示例:
http://jsperf.com/dot-operator-vs-array-notation
http://jsperf.com/dot-notation-vs-bracket-notation/2
他们两个都表明它们的相似度在1%以内,但是,他们都表明数组表示法的速度略快。
编辑:
浏览新创建的jsperfs,我发现了以下两个:
http://jsperf.com/mpaaa
http://jsperf.com/property-dot-versus-string
它们都显示几乎相同,并且实际上,在对它们进行多次测试之后,它们显示出不同的结果(有时点速度更快,有时是数组符号)
这是一个平局
另一个编辑:
browserscope是错误的,尽管至少对我而言,它显示了其他浏览器中的一些非常不均衡的测试,但我在其中一个显示出巨大差异的测试中对其进行了测试,但发现的结果却与我已经发现的相似