1. 程式人生 > >你不知道的js之隱式強制型別轉換

你不知道的js之隱式強制型別轉換

你不知道的js之隱式強制型別轉換

1.| |和&&

注:


  1. undefined
  2. null
  3. false
  4. +0
  5. -0
  6. NaN
  7. ” ”
    以上為假值,其餘都是boolean真值

&&和| |運算子的返回值並不一定是布林型別,而是兩個運算元其中的一個值
var a = 42;
var b = "abc";
var c = "null";

a||b;//42
a&&b;//"abc"

c||b;//"abc"
c&&b;//null

| |和&&會對第一個運算元執行判斷,如果其值不是布林值,先進行boolean強制型別轉換 然後再判斷
對於| | 如果說條件判斷是true就返回第二個運算元 , false就返回第一個運算元
對於&& 如果說條件判斷是true就返回第一個運算元 , false就返回第二個運算元
條件語句中的判斷也會先轉化為布林值在進行判斷

2.相等比較中的隱式強制型別轉換(==)

1.字串與數字之間——先把字串轉換為數字再比較

var a = 42;
var b = "42";
a==b;//true

2.其他型別與布林型別——先把布林型別轉換為數字再比較

var a = 42;
var b = true;
a==b;//false

3.null與undefined——–直接相等

undefined==null//true
null==undefined//true

以下是經常出現的相等比較

"0" == null;        //false
"0" == undefined;   //false
"0" == false
; //true "0" == NaN; //false "0" == 0; //true "0" == ""; //false false == null; //false false == undefined; //false false == NaN; //false false == 0; //true false == ""; //true false == []; //true false == {}; //false "" == null; //false
"" == undefined; //false "" == NaN; //false "" == 0; //true "" == []; //true "" == {}; //false 0 == null; //flase 0 == undefined; //flase 0 == NaN; //flase 0 == []; //true 0 == {}; //flase

作者總結

0 false "0" [] ""任意兩個之間通過強制型別轉化都是相等的

注:false== “false” //false和[ ] == [ ] //false

==兩邊有[] "" 0 儘量不要使用==
兩邊都有true和false 千萬不要使用==


本文為作者原創,寫的有不對的地方希望大神能指出來

都看到這裡了,點播關注再走也不遲