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 ...