2011-11-15 283 views
2

可能重複:
Javascript === vs == : Does it matter which 「equal」 operator I use?
When would JavaScript == make more sense than ===?JavaScript和=== ===有什麼區別?

是什麼在比較未定義值的字符串以下方法之間的差異。

var x; 
if(x==undefined) 
{ 
    alert(x); 
} 

if(x===undefined) 
{ 
    alert(x); 
} 

我爲什麼應該更喜歡第二種方法在這種情況下..請讓我知道..優點

+0

Dup:http://stackoverflow.com/questions/2132878/when-would-javascript-make-more-sense-than/2132895#2132895 – Sarfraz

+0

@deceze方案不同... – Exception

+0

@user http:// stackoverflow.com/questions/776950/javascript-undefined-undefined然後。 – deceze

回答

14
  • ==嘗試測試前的值相同的類型轉換,如果他們的相同。"5" == 5
  • ===不這樣做;它要求對象是相同類型的。 "5" !== 5

在這種情況下,結果是:如果xundefinednull

  • x == undefined將是真實的。
  • x === undefined只有在xundefined時才爲真。

如果您想要將undefined和null等效處理,您應該首選第一種方法。這個的一個常見用法是可選的函數參數。

function greet(name, greeting) { 
    if (name == undefined) name = 'World'; 
    if (greeting == undefined) greeting = 'Hello'; 
    alert(greeting + ' ' + name); 
} 

greet(); // alerts "Hello World" 
greet("Bob"); // alerts "Hello Bob" 
greet(null, "Goodbye"); // alerts "Goodbye World" 
4

===檢查同一類型爲好。你會用幾個例子明白:

(1 == '1') //Returns true 

由於==不會理會類型,即返回true。但是,如果您想要進行嚴格的類型檢查,那麼您將使用===,因爲如果它是相同類型並且是相同的值,則它將僅返回而不是

(1 === '1') //Returns false 
(1 === 1) //Returns true 
  • 兩個字符串嚴格相等時,他們有字符,相同的長度,和相同的字符的對應
    位置相同的序列。
  • 兩個數字在數值上相等時(具有相同的數字值)嚴格相等。 NaN不等於任何東西,包括NaN在內的
    。正和負的零相等。
  • 如果兩者都爲真或兩者都爲假,則兩個布爾操作數嚴格相等。
  • 如果兩個對象引用同一個對象,則兩個對象嚴格相等。
  • 空和未定義的類型是==(但不是===)。

Reference

7

假設我們有X = 5,

==等於

X == 8是假 X == 5爲真

===完全等於(數值和類型)

X === 5是真的 X ===「5」是假的

希望你理解這個概念

4

==只是比較兩個值,如果它們是不同的類型,類型轉換完成

===比較值和以及它們的類型 - 所以沒有類型轉換會在這裏完成。