第 65 题: a.b.c.d 和 a['b']['c']['d'] 哪个性能更高?

发布于 2022-10-07 18:48:40 字数 129 浏览 109 评论 3

别看这题,题目上每个字都能看懂,但是里面涉及到的知识,暗藏杀鸡,这题要往深处走,会涉及 ast 抽象语法树、编译原理、v8 内核对原生 js 实现问题,我觉得这个题是这篇文章里最难的一道题,所以我放在了开放题中的最后一题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

国粹 2022-05-04 13:27:21

看了楼顶的链接,知道了AST,还是很开心的。

简单气质女生网名 2022-05-04 12:55:37

https://jsperf.com/dot-notation-vs-square-bracket-notation
实验证明dot notation更快,但深层原理不是太明白

The results seem to be about the same. What causes slowdows is when the contents of the bracket are a variable - at that point the compiler can no longer say to itself "Oh, ['foo'] is the same as .foo.. continuing on!".

新一帅帅 2022-05-04 12:38:15

应该是 a.b.c.da['b']['c']['d'] 性能高点,后者还要考虑 [ ] 中是变量的情况,再者,从两种形式的结构来看,显然编译器解析前者要比后者容易些,自然也就快一点。
下图是两者的 AST 对比:

~没有更多了~

关于作者

0 文章
0 评论
21 人气
更多

推荐作者

烙印

文章 0 评论 0

singlesman

文章 0 评论 0

独孤求败

文章 0 评论 0

晨钟暮鼓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文