如何在JavaScript中引用未定义的变量时避免错误

How can I avoid the error when an undefined variable is referred to in JavaScript

本问题已经有最佳答案,请猛点这里访问。

在浏览器中出现以下抛出和错误"未定义模块"。为什么以及如何避免错误,因为我不能提前确定模块将被定义?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
;(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;
        });
    }
}());


添加此检查以查看是否已定义module

1
2
3
if(typeof module !=="undefined") {
    // do stuff
}

在您的示例中,您会得到一个异常,因为module在到达您的条件时尚未声明或分配。因此,当您尝试通过执行if(module)来检查它是否为空时,该变量从未被赋值,因此它抛出并异常。如果在执行var module = null之前,您的代码就可以工作。尽管您将它设置为null,但它已被分配,所以它不是undefined

使用typeof允许标识符以前从未声明过,因此可以避免遇到异常。