在JavaScript中引用未定义的变量时,如何避免错误
以下抛出并在浏览器中出现错误“未定义模块”。鉴于我无法提前确定将定义该模块,为什么以及如何避免该错误在JavaScript中引用未定义的变量时,如何避免错误,javascript,Javascript,以下抛出并在浏览器中出现错误“未定义模块”。鉴于我无法提前确定将定义该模块,为什么以及如何避免该错误 ;(function() { var version = '0.0.1'; /** * This file needs to work in * both NodeJS and browsers. */ if (module) { module.exports = version; } else {
;(function() {
var version = '0.0.1';
/**
* This file needs to work in
* both NodeJS and browsers.
*/
if (module) {
module.exports = version;
} else {
define(function() {
return version;
});
}
}());
添加此检查以查看是否定义了
模块
if(typeof module !== "undefined") {
// do stuff
}
在您的示例中,您会得到一个异常,因为模块在到达您的条件时尚未声明或分配。因此,当您试图通过执行if(module)
来检查它是否为null时,该变量从未被赋值,因此它会引发异常。如果正好在您执行的条件之前,您的代码将工作var module=null
。即使您将其设置为null
它也已被分配,因此它不是未定义的
使用typeof
允许以前从未声明过标识符,因此您可以避免遇到异常 为什么这样做有效,而我的例子不起作用?@BenAston我编辑了我的答案,试图解释差异。但我没有检查null。我在检查真实性<代码>模块
未定义,因此应强制为假
。我没有处于严格模式,所以不应该抛出错误,不;如果(foo){…与上一种情况下的if(foo){…
不同,您将得到错误,因为没有foo
var,或者在您的情况下,模块也可以参见