'=='操作符的小動作

[0] == true; // false
[] == ![];   // true

相稱操作符會有一個隱形的轉換,這個隱形的轉化會致使效果很”新鮮”。下面是隱形轉換的基礎劃定規矩:

  1. 个中一個值是boolean值:兩個值都轉為数字,false轉為0,true轉為1
  2. 个中一個值是字符串,另一個是数字:都轉為数字再對照
  3. 个中一個是對象,另一個不是對象:挪用對象的valueof要領,獲得基礎範例
  4. 个中一個是對象,另一個也是對象:對照對象指向的內存地址是不是相稱
  5. 个中一個是null,另一個是undefined:效果為true
  6. NaN與任何範例(包含自身NaN)都不相稱
  7. null,undefined在舉行比較的時刻,不舉行數據範例轉換

輸出效果剖析

[0] == true;

// 終究的對照情勢
Number([0]) == Number(true);
[] == ![];

// !的運算級別比 '==' 高,先舉行以下轉換
[] == false;

// 再轉化為終究的對照情勢
Number([]) == Number(false);

‘新鮮’的效果

undefined == 0;    // false

null == 0;    //false

false == 0;    //true

true == 1;    //true

true == 2;    //false

[] == [];    //false
    原文作者:馬園園
    原文地址: https://segmentfault.com/a/1190000015274878
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞