JavaScript中的if typeof ='undefined'在try/catch空间中的含义是什么?

10

我有一个被包含在try/catch块中的代码。我使用typeof来判断变量是否已定义:

if (typeof (var) == 'string') { 
    //the string is defined
}
然而,在try/catch块中使用此方法时,会跳转到catch部分,而不是执行其应该执行的操作(如果定义了字符串,则对其进行某些操作)。
如何检查变量是否已定义而不激活异常?

1
似乎您遇到了与您所想不同的问题 - 发布更多的代码。 - annakata
谢谢大家的回答!我的变量是一个数组项。这就是原因。我定义了该数组(为空数组),现在它可以工作了。异常被触发是因为该数组不存在。 - Nir
一个要点:typeof是一个运算符,而不是函数。你不需要在操作数周围加括号。*[这是从我的答案迁移过来的,因为它不是一个答案;我相信当时我的声望不足以发表评论]* - Tim Down
2个回答

14

'var' 不是一个有效的变量名 - 它是一个关键字。

除此之外,你所拥有的应该是正确的。


谢谢!请看我的上面的评论。 - Nir

0

我会使用直接比较而不带 'typeof':

var vvv= 2;
alert( vvv !== undefined );

然而请小心,要知道你想检查的是真实值(非假、null、未定义、""或0),还是针对null、未定义、false或它们的组合。

如果你只想看到这个数值有一个值,我放置在上面的代码应该可以做到。

作为建议,我发现这本书非常好JavaScript - the Good Parts


谢谢!请看我上面的评论。 - Nir
6
var vvv = 2; alert( vvv !== undefined ); 这段代码并非在所有情况下都起作用。首先,尝试去掉第一行,你会立即收到一个错误提示,因为vvv没有被声明。其次,并不像重要的是,右侧比较运算符中的"undefined"是全局对象的属性,可以被重新赋值,在某些浏览器(例如IE 5)中甚至不存在。因此,最好的变量v已定义测试方法是:if (typeof v !== "undefined") { ... } - Tim Down

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接