2014-03-27 102 views
0

我想了解關於JSON字符串的一個簡單的基本概念。我運行一個簡單的測試,看起來像這樣:json字符串格式化整數值

$(document).ready(function() { 
var last = 9; 
var json1 = $.parseJSON('{"id":"10"}'); 
var json2 = $.parseJSON('{"id":10}'); 

if(json1.id > last) 
    alert("json1.id is greater than last"); 

if(json2.id > last) 
    alert("json2.id is greater than last"); 

}); 

自變量「最後」的類型爲int我試圖使它從兩個不同的JSON字符串「ID」之間的比較。 json1將十個值表示爲一個字符串,而json2將其表示爲一個整數值。運行時,兩個警報都會執行。我原本沒想到。我預計第二個警報會執行,但不是第一個,因爲十個字符串被呈現。

我相信在JSON中格式化整數值的正確方法是在json2中,對嗎?

爲什麼第一次測試執行警報?

我想解決一個較大的項目,並認爲問題可能是在格式JSON字符串的方式。

+0

它的JavaScript,它並沒有真正關心的類型。 – gpgekko

回答

1

JavaScript的運算符的文件保存所有的答案:

字符串是基於標準的字典序進行比較,使用 Unicode值。在大多數情況下,如果兩個操作數的類型不同,JavaScript會嘗試將它們轉換爲 的適當類型進行比較。這種行爲通常會導致數字比較 操作數。 比較中唯一例外的類型轉換涉及===和!==運算符,它們執行嚴格的 平等和不等比較。在檢查相等性之前,這些運算符不會嘗試將操作數轉換爲兼容的類型。

來源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Comparison_operators