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 )
}
答案 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存在时