我这样说是否正确:

if (y === x) {
    //statement a
} else {
    //statement b
}


比这更有效:

if (y !== x) {
    //statement b
} else {
    //statement a
}


注意:声明的顺序。

最佳答案

首先,我要说“不”,或者至少不能可靠地确定它,因为它最终最终将取决于实现。

话虽这么说,!==还有规范中描述的另一个步骤,即返回比较结果的反面。否则它们是相同的。


  11.9.4严格等于运算符(===)
  
  生产EqualityExpression:EqualityExpression === RelationalExpression的评估如下:
  
  
  令lref为评估EqualityExpression的结果。
  令lval为GetValue(lref)。
  令rref为评估RelationalExpression的结果。
  令rval为GetValue(rref)。
  返回执行严格相等比较的结果rval === lval。 (见11.9.6)
  
  
  11.9.5严格不等于运算符(!==)
  
  生产EqualityExpression:EqualityExpression!== RelationalExpression的评估如下:
  
  
  令lref为评估EqualityExpression的结果。
  令lval为GetValue(lref)。
  令rref为评估RelationalExpression的结果。
  令rval为GetValue(rref)。
  令r为执行严格相等比较的结果rval === lval。 (见11.9.6)
  如果r为true,则返回false。否则,返回true。
  


我让您决定是否应该关注该步骤,但是同样,这只是语言规范。谁知道实现的窍门。

10-08 07:27