我有三个页面使用相同的代码,并且在其中一个页面上此变量不存在,另外两个变量ticketType的值为1或2.我需要先检查ticketType是否存在且isn' t undefined,其次,需要确定它是1还是2。
此if语句生成错误:
if(typeof ticketType != undefined && ticketType == 1){}
它在说ticketType isn't defined
。我尝试嵌套if语句来检查它是否首先被定义为认为它不会去尝试内部if语句但是firebug仍然会产生错误。
有什么想法吗?必须有办法做到这一点......
答案 0 :(得分:11)
'undefined'
一起使用时, typeof
需要引用它
if(typeof ticketType != 'undefined' && ticketType == 1){}
答案 1 :(得分:3)
undefined应该在引号内......
if (typeof ticketType !== "undefined" && ticketType == 1)
{
}
修改强>
这里我们不是在谈论global.undefined,它不必括在引号内。我们正在讨论typeof operator的返回类型,它是一个字符串。顺便提一下,对于未定义的变量,typeof返回“undefined”,因此我们需要将它包含在字符串中。
// ticketType is not defined yet
(typeof ticketType !== undefined) // This is true
(typeof ticketType === undefined) // This is false
(typeof ticketType !== "undefined") // This is false
(typeof ticketType === "undefined") // This is true
var ticketType = "someValue"; // ticketType is defined
(typeof ticketType !== undefined) // This is still true
(typeof ticketType === undefined) // This is still false
(typeof ticketType !== "undefined") // This is true
(typeof ticketType === "undefined") // This is false
因此,正确的检查是针对"undefined"
而不是针对global.undefined
。
答案 2 :(得分:0)
if(typeof ticketType != 'undefined' && ticketType == 1){}
我认为你需要围绕未定义单词的引号。至少我总是这样做。
答案 3 :(得分:0)
用括号括起来。
if (typeof(ticketType) !== 'undefined' && ticketType === 1)
答案 4 :(得分:0)
正确的语法是:
if (typeof ticketType !== 'undefined' && ticketType === 1) { }
typeof
运算符的结果始终是一个字符串。见这里:http://www.javascriptkit.com/javatutors/determinevar2.shtml
答案 5 :(得分:0)
错误信息非常清楚。试试这个:
var ticketType;
if(typeof ticketType != undefined && ticketType == 1){}
您不能只引用不存在的变量。您只能在分配时执行此操作:
ticketType = 1;
浏览器投诉,因为ticketType
是未知标识符。但是,如果我们首先声明它(即使没有赋值任何值),它就会被知道,但值undefined
。
答案 6 :(得分:0)
您错误地检查了未定义的变量,但如果您打算使用它,为什么不确定它是否已定义?
ticketType = ticketType || 1;
if (ticketType === 1) {
//do stuff
}
正如其他人所表明的那样,在JS中检查未定义值的标准方法是:
typeof somevar === 'undefined'
答案 7 :(得分:-2)
使用console.log(someVar)的simlpe;