我认为这是一个非常标准的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!");
}
};

答案 0 :(得分:0)
fasle
被评估为undefined
,然后在转换为布尔值时评估为false。
但是 false === fasle
评估为false,因为它们有不同的类型。
这会在严格模式javascript中给你一个错误,因为在这种情况下不允许使用未定义的变量。
我猜您的脚本可以“正确”运行与您正在使用的浏览器有关,我最初否认了这一点。在safari和chrome上进行测试时,这只会产生错误。
BTW,if ( nap = true)
将始终为真,if ( nap = false)
将始终为false。这是因为=
是赋值运算符,而==
是您想要的相等比较运算符。赋值运算符将始终求值为右操作数。