Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中引用未定义的变量时,如何避免错误_Javascript - Fatal编程技术网

在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,或者在您的情况下,
模块也可以参见