【问题标题】:Javascript if typeof ='undefined' in try/catch spaceJavascript if typeof ='undefined' in try/catch space
【发布时间】:2009-06-30 11:12:56
【问题描述】:

我有包含在 try/catch 块中的代码。 我使用 typeof 来确定是否定义了变量:

if (typeof (var) == 'string') { 
    //the string is defined
}

但是,在 try/catch 块中使用 this 会跳转到 catch 部分,而不是做它应该做的事情(如果定义了字符串,则对字符串做一些事情)。

如何在不激活异常的情况下检查变量是否已定义?

【问题讨论】:

  • 看起来您遇到的问题与您认为的不同 - 发布更多代码
  • 感谢大家的回答!我的 var 是一个数组项。这就是原因。我定义了数组(作为空数组),现在它可以工作了。由于数组不存在,因此触发了异常。
  • 一点:typeof 是一个运算符,而不是一个函数。您不需要在操作数周围加上括号。 [这是从我的答案迁移而来,因为它不是答案;我相信我当时没有足够的代表发表评论]

标签: javascript try-catch


【解决方案1】:

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

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

【讨论】:

  • 谢谢!请看我上面的评论
【解决方案2】:

我会使用不带“typeof”的直接比较:

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

但请注意,您是否要检查真实性(不是 false、null、undefined、"" 或 0)、null、undefined、false 或这些的组合。

如果你只是想看值有值,我上面放的代码应该可以。

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

【讨论】:

  • 谢谢!请看我上面的评论
  • var vvv= 2;警报(vvv!== 未定义);并非在所有情况下都有效。首先,在没有第一行的情况下尝试它,你会立即得到一个错误,因为 vvv 没有被声明。其次,这并不重要,比较右侧的“未定义”是可以重新分配的全局对象的属性,甚至在某些浏览器中不存在(例如,IE 5) .因此,对正在定义的变量 v 的最佳测试是: if (typeof v !== "undefined") { ... }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多