【问题标题】:How to have a statement identify an undefined variable? [duplicate]如何让语句识别未定义的变量? [复制]
【发布时间】:2013-08-30 22:45:48
【问题描述】:

假设你有以下功能:

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

【问题讨论】:

  • 试试!==typeof !==stackoverflow.com/questions/27509/…
  • 您正在警告一个名为“variable”的变量,但您的 if 测试是在一个名为“exponent”的变量上进行的。你描述问题的方式对我来说听起来就像你认为你只有一个变量。对于您显示的代码,将值 2 分配给 variable 会影响对 exponent 的 if 测试是没有意义的。 另外,请澄清您所说的“未定义的变量”,因为它可能表示“存在但保存值 undefined 的变量”,也可能表示“根本不存在的变量”。
  • 嗯,它似乎是重复的。我想我的搜索查询有点不对劲,但感谢所有回复的人。

标签: javascript undefined


【解决方案1】:
> exponent != 'undefined'

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

因此您可以将其值与 undefined 值进行比较:

exponent != undefined

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

if (typeof exponent != 'undefined')

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

【讨论】:

  • 啊,看来我当时语法错了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-03-21
  • 2013-08-05
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多