如何让语句识别未定义的变量? [复制]
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')
在这种情况下,您是使用上面的严格版本还是抽象版本(分别为!==
或!=
)没有任何区别。
【讨论】:
啊,看来我当时语法错了。非常感谢!以上是关于如何让语句识别未定义的变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章