如何在JavaScript中评估此表达式

时间:2019-02-01 12:28:50

标签: javascript

我知道我在此表达式中使用的优先级:

if (typeof day === "undefined" || notifiedday !== weekday) //do something
  

=== 10   
   || 5   
  !== 10

来源https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table

我知道在C ++的在代码执行过程中此表达式将工作是这样的:

if (typeof day === "undefined")
{
  if(notifiedday !== weekday)
  {
   //do something
  }
}

我仍然不知道如何做到这一点在JavaScript中运行时的工作。

2 个答案:

答案 0 :(得分:0)

当结果清晰时比较结束。

if (false && true) {  } //true won't be evaluated since the left side of the operation gave the final result

if (true || false) {  } //false won't be evaluated since the left side of the operation gave the final result

对于多条语句,它的作用相同

if (false || (false && true)) {  } // both falses are evaluated, the true won't be.

答案 1 :(得分:0)

它在JS中的工作原理与在C ++中的相同。尽管您添加到问题中的示例是错误的,但应该是:

if (typeof day === "undefined"){ // do something }
else if(notifiedday !== weekday){ // do same thing }

您写的东西很有趣

if (typeof day === "undefined" && notifiedday !== weekday){ //do something }

或功能

if(typeof day === "undefined" || notifiedday !== weekday)

由于使用或,因此表达式为真时只需其中之一为真。因此,如果typeof day === "undefined"为true,则不需要检查notifiedday !== weekday,但是如果typeof day === "undefined"为false,则需要检查两个项目。

和功能

if(typeof day === "undefined" && notifiedday !== weekday)

由于和一起使用,因此两个表达式都必须为真。所以,如果typeof day === "undefined"为假,则notifiedday !== weekday并不需要进行检查,因为and同时需要的,但如果typeof day === "undefined"为真,则需要检查这两个项目。