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

JavaScript:检查变量是否存在以及是否等于值,javascript,Javascript,我有三个页面使用相同的代码,其中一个页面上这个变量不存在,另两个页面上变量ticketType的值为1或2。我需要首先检查ticketType是否存在,是否未定义,其次,需要确定它是1还是2 此if语句生成错误: if(typeof ticketType != undefined && ticketType == 1){} 它的意思是,ticketType没有定义。我尝试嵌套if语句,以检查它是否首先定义,并认为它不会去尝试内部if语句,但firebug仍然生成错误 有什么想法

我有三个页面使用相同的代码,其中一个页面上这个变量不存在,另两个页面上变量ticketType的值为1或2。我需要首先检查ticketType是否存在,是否未定义,其次,需要确定它是1还是2

此if语句生成错误:

if(typeof ticketType != undefined && ticketType == 1){}
它的意思是,
ticketType没有定义
。我尝试嵌套if语句,以检查它是否首先定义,并认为它不会去尝试内部if语句,但firebug仍然生成错误


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

'undefined'
typeof
一起使用时,需要在其周围加引号

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

我想你需要在未定义的单词周围加引号。至少我总是这样做。

用括号括起来

if(typeof(ticketType)!='undefined'&&ticketType==1)

正确的语法是:

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

typeof
运算符的结果始终是字符串。请参见此处:

错误信息非常清楚。试试这个:

var ticketType;
if(typeof ticketType != undefined && ticketType == 1){}
不能只引用不存在的变量。您只能在分配以下内容时执行此操作:

ticketType = 1;

浏览器投诉,因为
ticketType
是未知标识符。但是,如果我们首先声明它(即使没有赋予它任何值),它将变为已知,但带有
未定义的
值。

未定义的值应该在引号内

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

在这里,我们不是在谈论不必包含在报价中的内容。我们正在讨论的返回类型是字符串。顺便说一句,对于未定义的变量,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”
而不是针对
全局的。undefined
您错误地检查了一个未定义的变量,但是如果您计划使用它,为什么不确保它已被定义

ticketType = ticketType || 1;
if (ticketType === 1) {
  //do stuff
}

正如其他人所示,检查JS中未定义值的标准方法是:

typeof somevar === 'undefined'

使用console.log(someVar)模拟LPE

typeof
不是一个函数。不需要括号。我认为typeof不需要括号。我第一次用它的时候把我弄糊涂了。我不认为未定义的需要加引号。我的理解是,undefined的唯一问题是它可能会被意外覆盖。很好的解释,但只要您确定比较了两个字符串(或两个整数),就没有必要通过
===
检查变量类型==
typeof
始终返回字符串,然后
typeof ticketType!=“undefined”
表示链接的资源不足,如果
typeof
的操作数为
null
它将计算为字符串
“object”
,例如:
typeof null==“object”
typeof somevar === 'undefined'