如何让语句识别未定义的变量? [复制]

Posted

技术标签:

【中文标题】如何让语句识别未定义的变量? [复制]【英文标题】: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 !== 见***.com/questions/27509/… 您正在警告一个名为“variable”的变量,但您的 if 测试是在一个名为“exponent”的变量上进行的。你描述问题的方式对我来说听起来就像你认为你只有一个变量。对于您显示的代码,将值 2 分配给 variable 会影响对 exponent 的 if 测试是没有意义的。 另外,请澄清您所说的“未定义的变量”,因为它可能表示“存在但保存值 undefined 的变量”,也可能表示“根本不存在的变量”。 嗯,它似乎是重复的。我想我的搜索查询有点不对劲,但感谢所有回复的人。 【参考方案1】:
> exponent != 'undefined'

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

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

exponent != undefined

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

if (typeof exponent != 'undefined')

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

【讨论】:

啊,看来我当时语法错了。非常感谢!

以上是关于如何让语句识别未定义的变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 JavaScript 中的“未定义”? [复制]

如何检查 JavaScript 中的“未定义”? [复制]

Python,如果带有变量的语句错误说未定义

如何修复自定义模块中的“未定义变量”

PHP PHP准备语句 - 带有未定义的变量数传递给bind_result()

PHP编写的语句-传递给bindu result()的变量数未定义