Javascript逻辑运算符或

时间:2015-10-12 02:25:08

标签: javascript logical-operators

我认为这是一个非常标准的Javascript逻辑运算符示例,但我发现输入错误的答案是正确的。当无聊= fasle(错误拼写错误)时,代码执行正确。为什么" 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!");
  }
  
};




1 个答案:

答案 0 :(得分:0)

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

但是false === fasle评估为false,因为它们有不同的类型。

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

我猜您的脚本可以“正确”运行与您正在使用的浏览器有关,我最初否认了这一点。在safari和chrome上进行测试时,这只会产生错误。

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