Javascript逻辑运算符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的值为false,因为它们的类型不同。

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

我猜你的脚本可以"正确"运行确实与你正在使用的浏览器有关,我一开始否认了。当在safari和chrome上测试时,这只会抛出一个错误。

BTW, if ( nap = true)总是为真,if ( nap = false)总是为假。这是因为=是赋值运算符,而==是您想要的相等比较运算符。赋值操作符总是求值到右操作数

最新更新