2011-10-04 53 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();