0

假设您具有以下功能:

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~~~ 被执行。

4

1 回答 1

3
> exponent != 'undefined'

您需要了解抽象等式比较算法。以上尝试将 的值exponent与字符串“未定义”进行比较。由于exponent已定义但尚未分配值,它将返回不等于字符串“未定义”的 undefined(根据上述算法)。

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

exponent != undefined

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

if (typeof exponent != 'undefined')

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

于 2013-08-28T02:06:59.787 回答