什么是运算符的执行/执行顺序&&在javascript中

时间:2018-04-24 12:15:19

标签: javascript

javascript中<div class="select-color"> <select id="first_m" > <option ="1">1</option> <option ="2">2</option> <option ="3">3</option> </select>月 </div>的运算符前置/执行顺序是什么

&&

通过添加括号来改变这一点似乎可以解决问题......

str = "string"
iterator = str[Symbol.iterator]()
while ( result = iterator.next() && !result.done ) { // Error result is not defined..Is it not a left to right evaluatation
  console.log( result.value )
}

3 个答案:

答案 0 :(得分:2)

好吧,因为你有作业,所以它被执行为:

result = (iterator.next() && !result.done)

而不是

(result = iterator.next()) && !result.done

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

答案 1 :(得分:2)

根据doc此处

中的表格

逻辑AND && Precedence 为6,而等于 = Precedence of 3,这意味着&&将首先执行,因为它具有更高的优先级,除非您使用括号()(优先级为20 - 最大值)

这解释了您在第一个代码中获得的结果

( result = iterator.next() && !result.done ) =&gt;变

( result = (iterator.next() && !result.done) ) //while result is already undefined

答案 2 :(得分:0)

您可以在此处找到所有优先顺序:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

当您发现=最后被执行时,在每种情况下,当没有任何parens存在时