有人可以解释为什么以下代码将原因值设为false吗?
if (reason = "" || reason == null) {
return;
}
alert(reason);
Run Code Online (Sandbox Code Playgroud)
reason将false(在大多数情况下),该代码段后,因为赋值操作符使用:
reason = ...
^
??? assignment
Run Code Online (Sandbox Code Playgroud)
具有较低的优先级比||和==。因此表达式:
"" || reason == null
Run Code Online (Sandbox Code Playgroud)
将首先被评估,false其值为或reason以外的任何其他值,然后分配回。nullundefinedreason
如果整个计算结果为false,则内部返回将永远不会执行。
参考:https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
reason = ...
^
??? assignment
Run Code Online (Sandbox Code Playgroud)
以上是对“为什么问题”的回答。但是由于赋值运算符可能是一个简单的错字,为了使代码更合理,您只需要使用两个比较(使用严格比较===以防止意外的类型强制),例如:
if (reason === "" || reason === null) { // ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |