JS顯式型別轉換及關於隱式型別轉化的底層邏輯

2021-10-07 07:49:59 字數 1782 閱讀 2597

顯式型別轉換是指使用函式主動將js資料型別轉化,而隱式型別轉化是指在程式執行中程式自動轉化型別的情況。

console.

log(

number

(true)

)// 1 發生顯示型別轉化

console.

log(true - false)

// 1-0=1 發生隱式型別轉化

number() 將其他型別的資料轉化為數值型,並返回轉化結果

parseint() 轉化為整數型數值,引數是其他的資料

parsefloat() 將其他型別資料轉化為浮點型

string() 將其他型別資料轉化為字串

tostring() 將其他型別資料轉化為字串

boolean() 將其他型別資料轉化為布林值

注意:在js資料在轉化為數值型時,沒有匹配的數值那麼就是nan

1.任何數跟nan算數運算都是nan

2.任何數跟nan比較都是false

3.nan不等於nan

在了解到js中的隱式型別轉化時,需要了解到兩個問題:

在js底層中,什麼資料可以進行運算?

為什麼會有隱式轉化?

下面將分別進行解答:

在js底層中,什麼資料可以進行運算?

在js底層中只有基本型別的資料才能進行運算。

拓展:js基礎型別(boolean、string、number、undefined、null)

js引用型別(array、object、function)

為什麼會有隱式轉化?
所有引用型別的資料,需要運算時候;先需要轉化為基本型別資料;再運算。

所有引用型別資料在轉化時只能先轉為字串;最後再有字串轉為其他型別。

因為瀏覽器預設資料就是字串;所以只能轉字串,在其他運算子作用下轉化為其他型別。

var res =

['111'

,'0',12

]+['11'

,'aaa'

]// + 連線符

// ['111','0',12] --> '111,0,12'

// + 為連線符號

// ['11','aaa'] ----> '11,aaa'

// res = '11,0,1211,aaa'

// **中將陣列轉化為字串,其中+為連線符

var res =

['111'

,'0',12

]-['11'

,'aaa'

]// ['111','0',12] ----> '111,0,12'

// ['11','aaa'] ----->'11,aaa'

// ---> '111,0,12' - '11,aaa'

// ---> nan -nan

// res = nan

// **中先將陣列轉化為字串,再將字串轉化為number

var res =

['23',23

,true]++

1// ['23',23,true] ----> '23,23,true'

// ----> '[object object]'

// res = '23,23,true[object object]1'

// 在預設隱式轉化中;所有的物件都轉化為 '[object object]'

JS型別和顯 隱式型別轉換

型別可以用 typeof 獲取。object型別,可以理解為引用型別,但是不完整。vara function console.log typeof 輸出 object console.log typeof 輸出 object console.log typeof null 輸出 object con...

顯式型別轉換和隱式型別轉換

typeof六種資料型別 number string boolean undefined object function var num 123 console.log typeof num number var num1 true console.log typeof num1 string va...

顯式型別轉換 隱式型別轉換 變數作用域

妙味課堂 1 顯式型別轉換 強制型別轉換 parseint可以把字串轉化為數字 或者說從字串中提取數字 12.6 12 12px34 12 abc nan not a number 從左到右是數字取出,碰到不是數字的停止 parsefloat把字串轉化為小數 求和器 注意 1 nan和任何東西相加還...