由於Which equals operator (== vs ===) should be used in JavaScript comparisons?表示它們基本相同,除了'===
'也確保類型相等,因此'==
'可能會執行類型轉換。在道格拉斯克羅克福德的JavaScript:好的部分,建議總是避免'==
'。但是,我想知道設計兩組相等運算符的原始思想是什麼。JavaScript ==何時比===更有意義?
您是否看到過使用'==
'實際上比'===
'更適合使用的任何情況?
由於Which equals operator (== vs ===) should be used in JavaScript comparisons?表示它們基本相同,除了'===
'也確保類型相等,因此'==
'可能會執行類型轉換。在道格拉斯克羅克福德的JavaScript:好的部分,建議總是避免'==
'。但是,我想知道設計兩組相等運算符的原始思想是什麼。JavaScript ==何時比===更有意義?
您是否看到過使用'==
'實際上比'===
'更適合使用的任何情況?
考慮一個情況,當你比較數字或字符串:
if (4 === 4)
{
// true
}
但
if (4 == "4")
{
// true
}
一nd
if (4 === "4")
{
// false
}
這適用於對象以及數組。
因此,在上述情況下,你必須做出明智的選擇是否使用==或===
==比較兩邊的值是否相同。
===比較兩邊的值和數據類型是否相同。
說我們有
$var = 0;
if($var == false){
// true because 0 is also read as false
}
if(!$var){
// true because 0 is also read as false
}
if($var === false){
// false because 0 is not the same datatype as false. (int vs bool)
}
if($var !== false){
// true becuase 0 is not the same datatype as false. (int vs bool)
}
if($var === 0){
// true, the value and datatype are the same.
}
-1這是關於JavaScript而不是PHP。 – Gumbo 2010-01-25 14:32:54
我建議有使用==
沒有問題,但要了解何時以及爲什麼要使用它(即通常使用===
,而當服務於某個目的時使用==
)。從本質上講,==
只是給你速記符號 - (!vble),而不是做一些像
if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ...
這是很容易只寫
if (vble == false) ...
(甚至更容易編寫)
如果...
當然,還有更多的例子不只是尋找「truthy」或「falsey」值。
真的,你只需要瞭解什麼時候以及爲什麼使用==
和===
,我看不出有任何理由不使用==
它比較適合你......
另一個例子是使用這個速記符號允許速記方法調用:
function func(boolOptionNotCommonlyUsed) {
if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true
//do something we rarely do
}
//do whatever func usually does
}
func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg
簡單的回答是,「==」,使超過意義上的「===」當你想類型強制轉換比較期間發生。
一個很好的例子是在URL查詢字符串中傳遞的數字。例如,如果您有分頁內容,並且page
查詢參數包含當前頁碼,則可以使用if (page == 1) ...
檢查當前頁面,即使page
實際上是"1"
而不是1
。
我不是問這兩者之間的區別,這是在359494中回答的。我很想知道什麼時候'=='會特別合適。 – bryantsai 2010-01-25 14:39:39
@bryantsai:他給了你 - 比較字符串與數字,而不用手動使用'parseInt'。 – Anonymous 2010-01-25 14:45:01
毫米..沒有真正發現,謝謝。 – bryantsai 2010-01-25 14:50:07