如何让语句识别未定义的变量

How to have a statement identify an undefined variable?

本文关键字:未定义 变量 识别 语句      更新时间:2023-09-26

假设您有以下函数:

var variable;
function(variable);
function function(variable) {
    alert ("variable equals " + variable);
    if (variable != 'undefined') {
        ~~~code1~~~
    } else {
        ~~~code2~~~
    }
}

警报输出:

变量等于未定义的

但是,~~~code2~~~从未执行过。我猜我的语法不正确。如果我还没有定义变量,如何让函数函数执行~~~code2~~~?

额外信息

当变量变量被硬编码时,如以下代码所示:

var variable;
function(variable)
function function(variable) {
    variable = 2;
    alert ("variable equals " + variable);
    if (exponent == 2) {
        ~~~code1~~~
    } else {
        ~~~code2~~~
    }
}

~~~code1~~~被执行。

> exponent != 'undefined'

你需要了解抽象等式比较算法。以上尝试将exponent的值与字符串"undefined"进行比较。由于exponent已定义但尚未赋值,因此它将返回undefined,该值不等于字符串"undefined"(根据上面的算法)。

因此,您可以将其值与未定义的值进行比较:

exponent != undefined

或者您可以使用typeof运算符将值的类型与适当的字符串值进行比较(因为它总是返回字符串):

if (typeof exponent != 'undefined')

在这种情况下,无论您使用上面的严格版本还是抽象版本(分别为!==!=)都没有任何区别。