JS型別和顯 隱式型別轉換

2021-10-10 20:58:33 字數 4537 閱讀 3993

型別可以用 typeof() 獲取。

object型別,可以理解為引用型別,但是不完整。

vara=

function()

console.

log(

typeof

)// 輸出 object

console.

log(

typeof

)// 輸出 object

console.

log(

typeof

null

)// 輸出 object

console.

log(

typeof undefined)

// 輸出 undefined

console.

log(

typeof a)

// 輸出 function

為什麼typeof null 是 object 型別?

因為最早null出來的時候是為了指定空物件,是空物件的指標,空物件的佔位符。在es6制定的時候,有提出null的這個問題,但是被es6標準的時候拒絕了,因為修改這個的話,可能會導致之前寫的所有**都需要重新去修改,所以是個歷史遺留問題,可能以後會解決吧。

number()

console.

log(

number

(null))

// 輸出:0

console.

log(

number

(undefined)

)// 輸出:nan

console.

log(

number

('a'))

// 輸出:nan

console.

log(

number

('123'))

// 輸出:123

console.

log(

number

('1a'))

// 輸出:nan

console.

log(

number

(true))

// 輸出:1

console.

log(

number

(false))

// 輸出:0

parseint()

console.

log(

parseint

(true))

// 輸出:nan (parseint只會把number型別轉成整型,而不會先把其他型別轉為number型別)

console.

log(

parseint

(3.66))

// 輸出:3

console.

log(

parseint

('abc123'))

// 輸出:nan

console.

log(

parseint

('123abc12'))

// 輸出:123 (parseint只會從頭開始識別數字,識別到不是數字的情況下就停止,不會繼續向後識別)

console.

log(

parseint

(undefined)

)// 輸出:nan

console.

log(

parseint

(null))

// 輸出:nan

boolean()

null,undefined,nan,false,空字串都是 false,其他的都是true

console.

log(

boolean

(undefined)

)// 輸出:false

console.

log(

boolean

(null))

// 輸出:false

console.

log(

boolean

(nan))

// 輸出:false

console.

log(

boolean

(false))

// 輸出:false

console.

log(

boolean

('abc'))

// 輸出:false

字串裡是純數字,會隱式轉換為number

var a =

'123'

a++console.

log(a)

// 輸出124

字元換和數字相加,會會隱式轉換為字串

var a =

'a'+

1console.

log(a)

// 輸出 a1

字串中是純數字的情況下,乘法(*),除法(/),減法(-),求餘(%) 和 比較兩個數字都會轉成number

console.

log(

'3'*

'2')

// 輸出 6

console.

log(

'3'/

'2')

// 輸出 1.5

console.

log(

'3'-

'2')

// 輸出 1

console.

log(

'3'%

'2')

// 輸出 1

console.

log(

'3'>

'2')

// 輸出 true

=== 不進行隱式轉換

console.

log(

'3'===3)

// 輸出 false

在比較的時候下面情況比較特殊

// null,undefined既不大於零,也不小於零,也不等於零

// undefined === null 是 false

console.

log(

null

>0)

// 輸出 false

console.

log(

null

<0)

// 輸出 false

console.

log(

null==0

)// 輸出 false

console.

log(undefined >0)

// 輸出 false

console.

log(undefined >0)

// 輸出 false

console.

log(undefined ==0)

// 輸出 false

console.

log(

null

== undefined)

// 輸出 true

console.

log(

null

=== undefined)

// 輸出 false

字串前面增加 加號/減號,是要把字串成number的,如果字串不是純數字的則輸出輸出nan

var a =

'123'

console.

log(

+a)// 輸出number型別的 123

console.

log(

-a)// 輸出number型別的 -123

var a =

'123abc'

console.

log(

+a)// 輸出nan

console.

log(

-a)// 輸出nan

isnan()

isnan() 會先把裡面的值用number轉換後在進行判斷。

console.

log(

isnan

(nan))

// 輸出 true

console.

log(

isnan

(123))

// 輸出 false

console.

log(

isnan

('123'))

// 輸出 false

console.

log(

isnan

(a))

// 未定義的a 輸出 true

console.

log(

isnan

(null))

// 輸出 false

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

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

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

c 的隱式型別轉換和顯式型別轉換 c 的隱式型別轉換 在 c 語言中,一些預定義的資料型別之間存在著預定義的轉換。比如,從 int型別轉換到 long 型別。c 語言中資料型別的轉換可以用分為兩 類 隱式轉換 implicit conversions 和顯式轉換 explicit conversio...

js隱式型別轉換

筆試題 var x 1 if function console.log x 1undefined解析 if function f function f 作為表示式,function f消失,所以在if裡面,f為未宣告 任何乙個變數,未經宣告使用都會報錯。但是,typeof其時,不會報錯,而是unde...