2011-10-04 50 views
9

我有一个包含的Javascript真没有定义或引用

<car> 
    <id>123</id> 
    <sunroof>FALSE</sunroof> 
    <service>TRUE</service> 
</car> 

下面的代码只能如果我换真引号内,例如(service == "TRUE")

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

if(service === TRUE){ 
    var service_tag = '<a title="Service" href="">Service</a>' 
} else { 
    var service_tag = ''; 
} 
+3

布尔真正从字符串'“TRUE”'不同,工作方式设计 –

回答

24

没有引号javascript会尝试将TRUE解释为值/表达式。在javascript中没有本地定义的值TRUE。有true但javascript区分大小写,因此它不会绑定TRUEtrue

您从text()得到的值是string原语。写入"TRUE"可让您回拨string"TRUE",它的值与值成功比较service

1

其因为牛肚等于一个XML文件也检查类型,并且TRUE它是标识符“TRUE”是值

// this will work 
if(service === "TRUE"){ 
    var service_tag = '<a title="Service" href="">Service</a>' 
} else { 
    var service_tag = ''; 
} 

Difference between == and === in JavaScript

1

这是预期的。

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

4

JavaScript boolean true and false are lower case。

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

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

1

TRUE指的是一个名称为TRUE的变量,它不存在,所以你得到一个错误。 "TRUE"是一个包含字符TRUE的字符串。你的变量service将包含一个字符串,所以其中的第二个是你想要的。

2

设置服务等于这一点,所以JavaScript就能够解释自己的价值观:

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