小编pie*_*ian的帖子

在评估JavaScript中的相等或身份时,操作数顺序是否有任何区别?

问题:在评估JavaScript中的相等或身份时,操作数顺序是否有所不同?

在代码中,(0 == value)比更快还是更正确(value == 0)?(请注意,此问题对于身份运算符同样有效===.)

由于相等和同一性运算符都是可交换的,我不认为操作数顺序应该对评估性能产生影响,除非在计算等式算法本身时对左侧文字有一些固有的好处.我想知道的唯一原因是我最近使用Google的Closure Compiler来编写一些JavaScript,并注意到了这一点

if (array.length == 0 && typeof length === 'number') {

已编译成

if(0 == b.length && "number" === typeof c) {.

在两个相等的表达式中 - 一个松散和一个严格的闭包已经颠倒了我的操作数的顺序,在它们各自的表达式的左侧放置了一个数字文字和一个字符串文字.

这让我很好奇.

我通读了ECMAScript 5.1语言规范Equality Operators部分(第11.9节,第80-82页),发现虽然等式算法首先检查左侧操作数,但没有迹象表明使用它更快或更好作为该操作数的文字.

有没有关于ECMAScript的类型检查,使文字检查最佳?它可能是Closure编译器中的一些优化怪癖吗?或者可能是旧版ECMAScript的相等算法中的实现细节,该算法在此较新版本的规范中已被取消?

javascript syntax equality

5
推荐指数
1
解决办法
202
查看次数

标签 统计

equality ×1

javascript ×1

syntax ×1