JavaScript:检查变量是否存在以及是否等于value

时间:2011-11-17 21:50:48

标签: javascript

我有三个页面使用相同的代码,并且在其中一个页面上此变量不存在,另外两个变量ticketType的值为1或2.我需要先检查ticketType是否存在且isn' t undefined,其次,需要确定它是1还是2。

此if语句生成错误:

if(typeof ticketType != undefined && ticketType == 1){}

它在说ticketType isn't defined。我尝试嵌套if语句来检查它是否首先被定义为认为它不会去尝试内部if语句但是firebug仍然会产生错误。

有什么想法吗?必须有办法做到这一点......

8 个答案:

答案 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;