js中 , , 號的區別

2021-07-26 15:25:32 字數 1609 閱讀 5337

== 和 != 比較若型別不同,先嘗試轉換型別,再作值比較,最後返回值比較結果 。

而 === 和 !== 只有在相同型別下,才會比較其值。

一."="叫做賦值運算子,用來賦值

二. "==="叫做嚴格運算子。

嚴格運算子的運算規則如下,

(1)不同型別值

如果兩個值的型別不同,直接返回false。

(2)同一類的原始型別值

同一型別的原始型別的值(數值、字串、布林值)比較時,值相同就返回true,值不同就返回false。

(3)同一類的復合型別值

兩個復合型別(物件、陣列、函式)的資料比較時,不是比較它們的值是否相等,而是比較它們是否指向同乙個物件。

(4)undefined和null

undefined 和 null 與自身嚴格相等。

null === null  //true

undefined === undefined //true

三."=="叫做相等運算子

相等運算子在比較相同型別的資料時,與嚴格相等運算子完全一樣。

在比較不同型別的資料時,相等運算子會先將資料進行型別轉換,然後再用嚴格相等運算子比較。型別轉換規則如下:

(1)原始型別的值

原始型別的值(數值、字串、布林值)的資料會轉換成數值型別再進行比較。字串和布林值都會轉換成數值,所以題主的問題中會有第二個string輸出。

(2)物件與原始型別值比較

物件(這裡指廣義的物件,包括數值和函式)與原始型別的值比較時,物件轉化成原始型別的值,再進行比較。

(3)undefined和null

undefined和null與其他型別的值比較時,結果都為false,它們互相比較時結果為true。

(4)相等運算子的缺點

相等運算子隱藏的型別轉換,會帶來一些違反直覺的結果。

'' == '0'           // false

0 == '' // true

0 == '0' // true

false == 'false' // false

false == '0' // true

false == undefined // false

false == null // false

null == undefined // true

' \t\r\n ' == 0 // true

這就是為什麼建議盡量不要使用相等運算子

至於使用相等運算子會不會對後續**造成意外影響,答案是有可能會。

var a = undefined;

if(!a)

var a = undefined;

if(a == null)

var a = undefined;

if(a === null)

也就是說當a為undefined時,輸出的值會有變化,而在程式設計中物件變成undefined實在是太常見了

MyBatis中 號與美元符號的區別

可以進行預編譯 型別匹配等操作,會轉化為jdbc的型別。select from tablename where id 假設id的值為12,其中如果資料庫欄位id為字元型,那麼 表示的就是 12 如果id為整型,那麼id就是12,並且mybatis會將上面sql語句轉化為jdbc的select fro...

對映檔案中 號與 符號的區別

1.佔位符 preparesatement 預編譯 拼接字串 satment 拼接 可以將 放在這裡進行拼接。2.和 都是用來設定sql對映檔案中statement引數的佔位符,通過parametertype設定statemenet的引數型別,這裡可以有string字串 基本型別 pojo map型...

MyBatis中 號與美元符號的區別

可以進行預編譯 型別匹配等操作,會轉化為jdbc的型別。select from tablename where id 假設id的值為12,其中如果資料庫欄位id為字元型,那麼 表示的就是 12 如果id為整型,那麼id就是12,並且mybatis會將上面sql語句轉化為jdbc的select fro...