JS的相等與不相等


1. 嚴格相等 ===(嚴格相等比較的是兩個值是否相等,兩個被比較的值在比較前都不進行隱式轉換(即不轉換數據類型),所以當兩個值當數據類型不一致時,是不相等的)

  console.log(0 === 0)// true

  console.log(+0 === -0)// true

  console.log(0 === -0)// true

  console.log(0 === +0)// true

  console.log(0 ===  new Number(0))// false

  console.log(new Number(0) ===  new Number(0))// false 可以使用typeof查看兩者的區別

  console.log(Number(0) ===  Number(0))// true

  console.log(0 === '0')// false

  console.log(0 === '')// false

  console.log(0 === null)// false

  console.log(0 === undefined)// false

  console.log(0 === new String())// false

  console.log('0' === '0')// true

  console.log('0' === new String(0))// false

  console.log(new String(0) === new String(0))// false

  console.log(String(0) ===  String(0))// true

  console.log(null === null)// true

  console.log(null === undefined)// false

  console.log(undefined === undefined)// true

  console.log(NaN === NaN)// false

  console.log(0 === false)// false

  console.log(false === false)// true

  console.log({} === {})// false

  console.log({} === new Object())// false

  console.log(new Object() === new Object())// false

  console.log(Object() === Object())// false

  console.log([] === [])// false

  console.log([] === new Array())// false

  console.log(new Array() == new Array())// false

  console.log(Array() ==  Array())// false

  console.log(Symbol() === Symbol())// false (ES6語法)

  console.log(Symbol('test') === Symbol('test'))// false (ES6語法)

  建議不要使用new 新建對象

2. 非嚴格相等 ==(非嚴格相等比較是兩個值是否相等,兩個被比較的值,在被比較前會被轉為相同的數據類型)

  console.log(0 == 0)// true 

  console.log(+0 == -0)// true

  console.log(0 == -0)// true

  console.log(0 == +0)// true

  console.log(0 ==  new Number(0))// true

  console.log(new Number(0) ==  new Number(0))// false

  console.log(Number(0) ===  Number(0))// true

  console.log(0 == '0')// true

  console.log(0 == '')// true

  console.log(0 == null)// false

  console.log(0 == undefined)// false

  console.log(0 == new String())// true

  console.log('0' == '0')// true

  console.log('0' == new String(0))// true

  console.log(new String(0) == new String(0))// false

    console.log(String(0) ==  String(0))// true

  console.log(null == null)// true

  console.log(null == undefined)// true

  console.log(undefined == undefined)// true

  console.log(NaN == NaN)// false

  console.log(0 == false)// true

  console.log(false == false)// true

  console.log({} == {})// false 

  console.log({} == new Object())// false

  console.log(new Object() == new Object())// false

  console.log(Object() == Object())// false

  console.log([] == [])// false

  console.log([] == new Array())// false

  console.log(new Array() == new Array())// false

  console.log(Array() ==  Array())// false

  console.log(Symbol() == Symbol())// false (ES6語法)

  console.log(Symbol('test') == Symbol('test'))// false (ES6語法)

3. Object.is() (ES6語法,用來比較兩個值是否嚴格相等,與嚴格相等的行為基本一致,不同之處:+0不等於-0;NaN等於NaN)

  console.log(Object.is(+0, -0))// false

  console.log(Object.is(0, -0))// false

  console.log(Object.is(+0, 0))// true

  console.log(Object.is(NaN, NaN))// true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM