2016-04-27 101 views
3

我讀過很多關於真理和虛假(http://adripofjavascript.com/blog/drips/truthy-and-falsy-values-in-javascript.html)的好東西,特別是JavaScript中'=='和'==='之間的區別。最好的解釋和資源主要從這個堆棧溢出問題:在表單處理的隱藏字段中存儲布爾值

Which equals operator (== vs ===) should be used in JavaScript comparisons?

我的工作表單,而且需要一個布爾值存儲到一個隱藏字段具有以下jQuery的語法:

$('[name="fieldName"]').val(true);

所以我插入一個布爾值,真或假,到隱藏的領域。在屏幕上的處理,我搶在一些if語句下面的代碼的這個字段的值,並進行比較如下:

$('[name="fieldName"]').val() === "true"

注意如何我使用===運算符來比較字符串值「true」。

我的問題;如果只有JavaScript中的Object是類型引用,則布爾值必須是值類型。因此,我會假設,與===運算符的值比較不僅僅是內容而是比較類型,上面的表達式應該返回false?然而,在我的代碼中,它返回true - 任何人都可以解釋爲什麼這是?

此代碼以前使用==進行比較,但爲了避免出現虛假風險,我正在實施===,只要有可能。這可能是與jQuery轉換爲我的價值觀?

+0

中有什麼比較的代碼$ J′ –

+0

錯字 - 刪除! – coderwurst

回答

2

難道這與jQuery爲我轉換值有關嗎?

HTML表單元素總是將值存儲爲字符串,而不管實際內容是什麼。在你的情況下,它是一個boolean,但即使它說的是number類型,你會看到的是「10.5」而不是10.5。

如果你真的很想對布爾爲boolean,我會建議是:

Boolean($j('[name="fieldName"]').val()) === true 
+0

謝謝@smaili! – coderwurst