检查=== undefined时未捕获的ReferenceError(未定义)

时间:2018-04-04 20:39:54

标签: javascript comparison undefined comparison-operators

我有以下代码:

simpleExample.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Simple example</title>
</head>
<body>
    Open the Console.
    <script src="js/simpleExampleJS.js"></script>
</body>
</html>

js/simpleExampleJS.js

MyObject = {
    COMPUTER_GREETING: "Hello World!",
    hello: function() {
        console.log(MyObject.COMPUTER_GREETING);
    }
};

checkSomeGlobal = function() {
    if(someGlobal === undefined) {
        console.log("someGlobal is undefined & handled without an error.");
    } else {
        console.log("someGlobal is defined.");
    }
};

MyObject.hello();
checkSomeGlobal();

当我跑步时,我得到:

Hello World!
Uncaught ReferenceError: someGlobal is not defined
at checkSomeGlobal (simpleExampleJS.js:9)
at simpleExampleJS.js:17

(输出的第一行通常表示代码正在加载并运行)。

MDN indicates可能未定义的变量可用作严格等于/不等于comparison的左手大小。然而在检查 if(someGlobal === undefined)时,该行代码会产生错误,因为该变量未定义,而不是将比较评估为true。如何在没有错误的情况下检查和处理这个未定义的变量大小写?

1 个答案:

答案 0 :(得分:2)

该错误表示没有这样的变量(它从未被声明),而不是它的值是undefined

要检查变量是否存在,您可以编写typeof someGlobal