来自未定义检查的参考错误

时间:2018-03-01 11:39:53

标签: javascript

我在未完成的支票上得到了令人困惑的结果。

在我的记忆中,根据多个答案(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>

我错过了什么?

1 个答案:

答案 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'