关于javascript:如何使语句识别未定义的变量?

How to have a statement identify an undefined variable?

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

假设您具有以下功能:

1
2
3
4
5
6
7
8
9
10
11
12
var variable;

function(variable);

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

警报输出:

variable equals undefined

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

额外信息

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

1
2
3
4
5
6
7
8
9
10
11
12
13
var variable;

function(variable)

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

执行~~code1~~~。


1
> exponent != 'undefined'

您需要了解抽象的相等比较算法。上面试图将EDOCX1的值(0)与字符串"undefined"进行比较。由于exponent已定义,但尚未赋值,所以返回的值undefined不等于字符串"undefined"(根据上述算法)。

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

1
exponent != undefined

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

1
if (typeof exponent != 'undefined')

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