我在未完成的支票上得到了令人困惑的结果。
在我的记忆中,根据多个答案(1 2 3 4 5),以下代码应该有效。
// bar is not defined
if (bar) console.log("should not execute");
if (!bar) console.log("should execute");
var foo = bar || 'foo'; // should assign 'foo' but is undefined
但是在Chrome(版本63.0.3239)和Firefox Nightly(版本60.0a1)上,我得到了一个
Uncaught ReferenceError: bar is not defined
这种情况发生在没有严格模式的控制台和链接脚本
上// linked-script.js
(function() {
if (bar) console.log("should not execute");
if (!bar) console.log("should execute");
var foo = bar || 'foo';
})();
// index.html
<script type="text/javascript" src="linked-script.js"></script>
我错过了什么?
答案 0 :(得分:2)
问题是bar
不等于undefined
。它根本没有定义。该变量不存在。代码崩溃是因为您正在尝试读取不存在的变量。
var bar;
// bar is not defined
if (bar) console.log("should not execute");
if (!bar) console.log("should execute");
var foo = bar || 'foo'; // foo is now 'foo'