我正在努力加速一些使用许多以下结构的旧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是错误的,尽管至少对我而言,它显示了其他浏览器中的一些非常不均衡的测试,但我在其中一个显示出巨大差异的测试中对其进行了测试,但发现的结果却与我已经发现的相似

09-07 22:03