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