下面的javascript代码将原因值设置为false

下面的javascript代码将原因值设置为false,javascript,Javascript,有人能解释为什么下面的代码将原因值变为false吗 if (reason = "" || reason == null) { return; } alert(reason); 使用reason=”“为原因变量赋值时,使用条件运算符reason==”reason在该代码段之后将false(在大多数情况下),因为赋值运算符使用: reason = ... ^ └── assignment 优先级低于|和=。因此,表达: "" || reason == null

有人能解释为什么下面的代码将原因值变为false吗

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

使用
reason=”“
为原因变量赋值时,使用条件运算符
reason==”

reason
在该代码段之后将
false
(在大多数情况下),因为赋值运算符使用:

reason = ...
       ^
       └── assignment
优先级低于
|
=
。因此,表达:

"" || reason == null
将首先对除
null
undefined
以外的
reason
的任何值进行
false
评估,然后分配回
reason

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


参考:


const test=(reason)=>“”| | reason==null;
日志(测试(“某物”);
console.log(test(“”);
console.log(test(null));
控制台日志(测试(错误));
控制台日志(测试(0));

console.log(测试(未定义))
reason=”“
这是分配。您可能需要比较
reason==”
,因为您正在分配
reason=“”
,它强制为一个虚假的值,而不是。它会按照您的指示将其转换为空字符串:
reason=”“
。如果您想要比较,请编写
reason==”
或更好的
reason==”
。您发布的代码可能会在您的控制台中抛出错误。我可以猜您想检查它,但不想分配给它。此解释正是需要的。