Javascript 逻辑运算符或

Javascript Logical Operator OR

我认为这是一个非常标准的 Javascript 逻辑运算符示例,但我觉得有趣的是一个拼写错误使答案正确。当 bored = fasle(false 拼写错误)时,代码正确执行。为什么 "fasle" 有效?任何输入表示赞赏。

var tired = false;
var bored = true; 

var nap = function() {
  
  nap = tired || bored; 
  bored = fasle;
  //tired = false;
  if ( nap = true) {
      console.log("they're both true!");
  }
  else ( nap = false); {
      console.log("they're false!");
  }
  
};

fasle 被评估为 undefined,然后在转换为布尔值时评估为 false。

但是false === fasle计算结果为假,因为它们有不同的类型。

这会在严格模式下给你一个错误javascript,因为在这种情况下不允许未定义的变量。

我猜你的脚本 运行 "correctly" 确实与你使用的浏览器有关,我一开始否认了这一点。在 safari 和 chrome.

上测试时,这只会引发错误

顺便说一句,if ( nap = true) 永远为真,而 if ( nap = false) 永远为假。这是因为 = 是赋值运算符,而 == 是您想要的相等比较运算符。赋值运算符将始终计算为正确的操作数。