隱式型別轉換

2021-10-12 21:48:53 字數 1283 閱讀 1134

console.log( == 0) // true  和數字比較會轉成數字進行比較  number() => number('') => 0

console.log([1,2] == '1,2') //true  和字串比較,會將陣列先轉成字串

console.log([1,2] == '[1,2]') //false   陣列 [1,2] 轉成字串為 "1,2"

console.log({} == 0) // false  物件轉成數字為nan

console.log({} == '[object object]') //true  物件轉成字串為 '[object object]'   

console.log({} == {}) // false 物件比較的是位址,所以物件永遠不等

console.log({} == object) //false  物件比較的是位址,所以物件永遠不等

console.log(!{} == 0) // true 取反只能作用於布林值,物件轉成布林值都為true

console.log(! == 0) // true 取反只能作用於布林值,物件轉成布林值都為true    

console.log(!{} == !) // true 取反只能作用於布林值,物件轉成布林值都為true,取反後都為false   

布林值:true轉換為1, false轉換為0。

數值:直接返回。

null:返回0。

undefined:返回nan。

字串:  應用以下規則。

1、如果字串包含數值字元,包括數值字元前面帶加、減號的情況,則轉換為乙個十進位制數值。

因此,nnmber("1") 返回 1,number("123") 返回 123,number("011") 返回 11 (忽略前面的零)。

2、如果字串包含有效的浮點值格式如 "1.1",則會轉換為相應的浮點值(同樣,忽略前面的零)。

3、如果字串包含有效的十六進製制格式如 "0xf",則會轉換為與該十六進製制對應的十進位制整數值。

4、如果是空字串(不包含字元),則返回 0 。

5、如果字串包含除上述情況之外的其他字元,則返回 nan 。

物件:呼叫 valueof()  方法,並按照上述規則轉換返回的值。如果轉換結果是 nan,則呼叫 tostring() 方法,再按照轉換字串的規則轉換。

隱式型別轉換

c 本身對內建型別定義了各種隱式的型別轉換,這種內建的型別轉換在可能導致精度 丟失的情況下編譯器會發出警告,但當我們定義自己的型別時,提供各種隱式轉換往往 是弊大於利的 至少在我編寫過的 中很少用到 隱式的型別轉換可分為 其它型別到本型別,本型別到其它型別兩種.第一種通過單變數 可呼叫之建構函式進行...

隱式型別轉換

c語言中有以下四種情況會進行隱式轉換 1 算術運算子中,低型別轉換為高型別。2 賦值表示式中,右邊表示式的值自動隱式轉換為左邊變數的型別,並賦值。3 函式呼叫傳遞引數時,系統將實參轉換為形參的型別後,賦給形參。4 函式有返回值是,系統將表達值型別轉換為返回值型別。進行算術運算時,不同型別的數必須轉換...

隱式型別轉換

1.c的整型算數運算總是至少以預設型型別的精度來進行的。為了獲得這個精度,表示式的字元和短整型運算元在使用之前被轉換為普通整型,這種轉換叫 整型提公升 下面我們來看個例子 char a 2 char b 127 char c a b 求c 多少?首先char為1個位元組 而且是有符號的 char最大...