以下javascript代码将原​​因值设为false

时间:2019-03-20 07:35:08

标签: javascript

有人可以解释为什么以下代码将原因值设为false吗?

if (reason = "" || reason == null) {
  return;
}
alert(reason);

2 个答案:

答案 0 :(得分:7)

在大多数情况下,

reason将是false,因为使用了 assignment 运算符:

reason = ...
       ^
       └── assignment

优先级||==低。因此表达式:

"" || reason == null

将首先被评估为false,以获取reasonnull以外的undefined的任何值,然后分配回reason

如果整个计算结果为false,则内部返回将永远不会执行。


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


const test = (reason) => "" || reason == null;

console.log( test("something") );
console.log( test("") );
console.log( test(null) );
console.log( test(false) );
console.log( test(0) );
console.log( test(undefined) );


上面是“为什么要问” 的答案。但是由于赋值运算符可能是一个简单的错字,为了使代码更合理,您只需要使用两个比较(使用严格比较===来防止意外的类型强制),例如:

if (reason === "" || reason === null) { // ...

答案 1 :(得分:0)

使用reason = ""为原因变量分配值,请使用条件运算符reason == ""