在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 相等與比較
arguments 對象
類型轉(zhuǎn)換
構(gòu)造函數(shù)
instanceof 操作符
自動分號插入
為什么不要使用 eval
對象使用和屬性
作用域與命名空間
this 的工作原理
typeof 操作符
相等與比較
閉包和引用
數(shù)組遍歷與屬性
Array 構(gòu)造函數(shù)
原型
hasOwnProperty 函數(shù)
undefined 和 null
函數(shù)聲明與表達式
setTimeout 和 setInterval
for in 循環(huán)

相等與比較

JavaScript 有兩種方式判斷兩個值是否相等。

等于操作符

等于操作符由兩個等號組成:==

JavaScript 是弱類型語言,這就意味著,等于操作符會為了比較兩個值而進行強制類型轉(zhuǎn)換。

    ""           ==   "0"           // false
    0            ==   ""            // true
    0            ==   "0"           // true
    false        ==   "false"       // false
    false        ==   "0"           // true
    false        ==   undefined     // false
    false        ==   null          // false
    null         ==   undefined     // true
    " \t\r\n"    ==   0             // true

上面的表格展示了強制類型轉(zhuǎn)換,這也是使用 == 被廣泛認為是不好編程習(xí)慣的主要原因, 由于它的復(fù)雜轉(zhuǎn)換規(guī)則,會導(dǎo)致難以跟蹤的問題。

此外,強制類型轉(zhuǎn)換也會帶來性能消耗,比如一個字符串為了和一個數(shù)字進行比較,必須事先被強制轉(zhuǎn)換為數(shù)字。

嚴格等于操作符

嚴格等于操作符由個等號組成:===

不像普通的等于操作符,嚴格等于操作符不會進行強制類型轉(zhuǎn)換。

    ""           ===   "0"           // false
    0            ===   ""            // false
    0            ===   "0"           // false
    false        ===   "false"       // false
    false        ===   "0"           // false
    false        ===   undefined     // false
    false        ===   null          // false
    null         ===   undefined     // false
    " \t\r\n"    ===   0             // false

上面的結(jié)果更加清晰并有利于代碼的分析。如果兩個操作數(shù)類型不同就肯定不相等也有助于性能的提升。

比較對象

雖然 ===== 操作符都是等于操作符,但是當其中有一個操作數(shù)為對象時,行為就不同了。

    {} === {};                   // false
    new String('foo') === 'foo'; // false
    new Number(10) === 10;       // false
    var foo = {};
    foo === foo;                 // true

這里等于操作符比較的不是值是否相等,而是是否屬于同一個身份;也就是說,只有對象的同一個實例才被認為是相等的。 這有點像 Python 中的 is 和 C 中的指針比較。

注意:為了更直觀的看到=====的區(qū)別,可以參見JavaScript Equality Table

結(jié)論

強烈推薦使用嚴格等于操作符。如果類型需要轉(zhuǎn)換,應(yīng)該在比較之前顯式的轉(zhuǎn)換, 而不是使用語言本身復(fù)雜的強制轉(zhuǎn)換規(guī)則。

上一篇:自動分號插入下一篇:閉包和引用