但
这将在严格模式下给你一个错误,因为在这种情况下不允许未定义的变量
我认为这是一个非常标准的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)
总是为假。这是因为=
是赋值运算符,而==
是您想要的相等比较运算符。赋值操作符总是求值到右操作数