Javascript TRUE未定义或引号

我有一个包含的XML文件

 123 FALSE TRUE  

以下代码仅在我在引号内包装TRUE时才有效,例如(service == "TRUE")

 var service = tis.find("service").text(); if(service === TRUE){ var service_tag = 'Service' } else { var service_tag = ''; } 

如果没有引号,javascript将尝试将TRUE解释为值/表达式。 javascript中没有本地定义的值TRUE 。 这是true但javascript是区分大小写的,所以它不会将TRUE绑定为true

text()返回的值是一个string原语。 写"TRUE"会返回string "TRUE" ,它会与值service成功比较

JavaScript布尔值truefalse是小写的。

将服务设置为等于此,因此JavaScript将能够解释您的值:

 var service = tis.find("service").text().toLowerCase(); 

因为tripe等于也检查类型,而TRUE它是一个标识符“TRUE”是一个值

 // this will work if(service === "TRUE"){ var service_tag = 'Service' } else { var service_tag = ''; } 

JavaScript中==和===之间的区别

这是预料之中的。

tis.find("service").text(); 返回一个字符串,而不是布尔值,而true值的JavaScript布尔值为true (区分大小写,就像语言中的其他所有内容一样)。

 var service = tis.find("service").text(); 

这将返回一个字符串“TRUE”。 由于===也检查类型,因此它总是返回false。

TRUE指的是一个名为TRUE的变量,它不存在,因此您会收到错误。 "TRUE"是包含字符TRUE的字符串。 您的变量service将包含一个字符串,因此第二个是您想要的。