【问题标题】:Testing for undeclared variable测试未声明的变量
【发布时间】:2011-04-04 16:05:52
【问题描述】:
我正在尝试使用 javascript 解析 RSS 提要。有时一个提要有多个类别,所以我想检查第 2 项是否有任何内容。如果我不检查,我会收到错误消息,当我使用以下代码检查时,我也会收到错误消息。 (我设置 var cat2 只是为了测试变量是否已定义)。
var catItem = item.getElementsByTagName("category").item(2).text;
if (typeof catItem != 'undefined'){
var cat2 = "1"
}
else{
var cat2 = "2"
}
【问题讨论】:
标签:
javascript
variables
undefined
feedparser
【解决方案1】:
如果 (typeof catItem !== 'undefined'){ ... }
但是,我只想指出未定义的变量与未声明的变量不同。您要问的不是标题中的“测试未声明的变量”。
未定义变量是“已声明”但未分配任何值的变量。未声明的变量是没有用“var”关键字声明的变量。
【解决方案2】:
var catItem = document.getElementsByTagName("category")[2];
var cat2 = "2";
if (typeof catItem !== 'undefined') {
cat2 = "1";
}
你也可以通过使用三元运算来缩短它:
var catItem = document.getElementsByTagName("category")[2];
var cat2 = catItem ? "2" : "1";
【解决方案3】:
只有在位置 2 范围内有元素时,您的代码才有效。
为什么不直接做:
if(item.getElementsByTagName("category").length > 1) {
【解决方案4】:
你可以试试这样的:
var catItem = item.getElementsByTagName("category");
if(catItem[1]) {
...
}
else {
...
}