【问题标题】:Is bracket notation slower than period notation for accessing Object properties?括号表示法是否比访问对象属性的句点表示法慢?
【发布时间】:2016-03-25 05:11:42
【问题描述】:

我团队的一位开发人员提到,通过点表示法访问 Object 属性比括号表示法更快。例如:

var sample = { name: 'First Name' }
var nameBracket = sample['name']
var namePeriod = sample.name

在这种情况下,他们认为分配namePeriod 会比nameBracket 快。

这是真的吗?如果是这样,为什么?如果不是,为什么不呢?

相关:如何检验这一假设或类似问题以确定 JS 函数速度?

【问题讨论】:

    标签: javascript performance object brackets notation


    【解决方案1】:

    当您想尝试测试不同方法的速度时,事实上的工具似乎是 jsperf.com。

    有人已经对此提出质疑,并为此创建了一个测试。

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

    结果似乎差不多。导致慢的原因是括号的内容是一个变量 - 此时编译器不能再对自己说“哦,['foo'] 与 .foo 相同......继续!”。

    【讨论】:

    • 或者当内容是任何其他不仅仅是字符串的表达式时,obj[function(){ for( var start = (new Date).getTime(); (new Date).getTime() < start + 10000; ); return 'foo';}()] 将比obj.foo 花费大约 10 秒:P
    • 哦,你知道我的意思:P
    猜你喜欢
    • 2015-03-31
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多