js原始值與物件的相等比較

2021-10-08 20:31:30 字數 2054 閱讀 5831

lang

="en"

>

>

charset

="utf-8"

>

name

="viewport"

content

="width=device-width, initial-scale=1.0"

>

>

原始值與物件的相等比較title

>

head

>

>

>

let a =

;let b =

"0";

// 1

console.

log(a==0)

;// true

// 2

console.

log(a==

!a);

// true

// 3

console.

log(a==b)

;// false

// 4

console.

log(b==0)

;// true

// eg 1

console.

log(

number([

]));

// 0

// eg 2

console.

log(

boolean([

]));

// true

// eg 3

console.

log(

string([

]));

// ''

// eg 4

console.

log(

number

(b))

;// 0

/* js假值:只有false、null、undefined、空字元、0和nan,其它值轉為布林型都為true。

*/console.

log(

null==0

);// false

console.

log(

null

<0)

;// false

console.

log(

null

<=0)

;// true

// 要比較相等性之前,不能將null和undefined轉換成其他任何值。就是undefined和null與其他數在進行相等判斷時不進行型別轉換。

// null == undefined,這個是true,但是關係運算子可以轉換。

// 1、如果x不是正常值(比如丟擲乙個錯誤),中斷執行。

// 2、如果y不是正常值,中斷執行。

// 3、如果type(x)與type(y)相同,執行嚴格相等運算x === y。

// 4、如果x是null,y是undefined,返回true。

// 5、如果x是undefined,y是null,返回true。

// 6、如果type(x)是數值,type(y)是字串,返回x == tonumber(y)的結果。

// 7、如果type(x)是字串,type(y)是數值,返回tonumber(x) == y的結果。

// 8、如果type(x)是布林值,返回tonumber(x) == y的結果。

// 9、如果type(y)是布林值,返回x == tonumber(y)的結果。

// 10、如果type(x)是字串或數值或symbol值,type(y)是物件,返回x == toprimitive(y)的結果。

// 11、如果type(x)是物件,type(y)是字串或數值或symbol值,返回toprimitive(x) == y的結果。

// 12、返回false。

script

>

body

>

html

>

主要領域:前端開發

物件相等比較

對於string型別而言,一般用 或者equales做相等比較,前者比較字串的引用,後者比較字串的值。字串常量的值儲存於常量池中,只要值相同,那麼引用的就是同乙個字串常量,也就是說,和equals效果一樣。字串物件儲存於堆中,不同的物件在堆上的記憶體位址是不一樣的。因此,建立兩個值相等的string...

BigDecimal精度與相等比較的坑

先想一下,建立bigdecimal物件的時候一般是怎麼建立的?作為乙個數字型別,經常有的操作是比較大小,有一種情況是比較是否相等。用equal方法還是compareto方法?這裡就是乙個大坑 1 new 傳進去乙個double 2 bigdecimal newzero new bigdecimal ...

BigDecimal精度與相等比較的坑

先想一下,建立bigdecimal物件的時候一般是怎麼建立的?作為乙個數字型別,經常有的操作是比較大小,有一種情況是比較是否相等。用equal方法還是compareto方法?這裡就是乙個大坑 1 new 傳進去乙個double 2 bigdecimal newzero new bigdecimal ...