JS的雙等和三等的區別

洞拐洞拐發表於2016-09-30

  在JS會碰到一個奇怪的運算子"===",之前學JAVA和C語言,只有"==",JS冒出個"===",挺奇怪的,遂google之...

  在JS中"=="和"==="是都存在的,他們都是判斷兩端的表示式是否相同,但是有一點不一樣。

  因為在JAVA和C這中強型別語言中,每一個變數使用前都得必須先被宣告並且指定型別,所以說變數和變數之間的型別是否相等,就不需要開發者去判斷了,編譯器就可以完成此任務,但是像JS這個弱語言,我可以突然半路冒出個abc變數,而這個變數又不用提前宣告,而且可以存放任意型別的的值,這就比較變態了,所以說兩個變數進行比較的時候,由於JS的特性,是可以考慮先比較型別,再比較值的,這就是"==="的作用,詳情如下:

  "=="就代表會先把兩端的變數試圖轉換成相同型別,然後再比較;"==="就代表會直接去比較型別是否相同,如果型別相同則繼續比較值是否相同。

舉個例子:
 
當Integer的1和String的"1",進行==比較的時候,兩端的變數會先轉換成相同型別,再去進行值得比較,有點JAVA裡面的equals的意思;當進行===進行比較的時候,兩端的變數會先進行型別之間的比較,
如果型別不相等,直接返回false。

  

再舉個例子:

  

 當比較的兩個物件是Object型別的時候,==和===的效果是一樣的,因為兩個不同物件之間的值是無法直接進行比較的,也是無法相互轉換的,So,兩個比較全為false.

相關文章