JavaScript型別轉換方法及需要注意的問題

2021-09-08 15:32:56 字數 4254 閱讀 2859

一、型別轉換的方法和應該注意的問題:

1.轉換為布林型:(1

)用兩次非運算

(!):

!!5 ==> true(2

)用布林型的建構函式:

new boolean(5) == > true

值轉換為布林型別為

false:0

,+0,-0

,nan

,""(

空字串

),undefined,null

除上面的值其他值在轉換以後為

true

,需要特別提到的是

:"0",new object(),function(){}

2.轉換為字串型別:(1

)加上空字串"":

123 +

"" = "123"(2

)用字串建構函式:

new string(123) = "123".

需要特別注意的轉化:

+0 ==> "0"

-0 ==> "0"

-infinity ==>"-infinity"

+infinity ==>"+infinity"

nan ==> "nan"

undefined ==> "undefined"

null ==> "null"

new object() ==> "[object object]"

function(){} ==> "function(){}"

3.轉換為數值型:(1

)取正(+),

減零(-0),

乘一,(

*1),除以一(

/1),

取負(-

,這個得到相反的值)。

+"123" = 123

+true = 1(2

)用建構函式

number();

new number("123") = 123

幾個需要特別注意的轉化:

""(空字串)

==> 0

"010" ==> 10

"0x10"(16

進製) ==> 16

"-010" ==> -10

"-0x10" ==> nan

undefined ==> nan

null ==> 0

true ==> 1

false ==> 0

new object() ==> nan

new function(){} ==> nan

二、隱式型別轉換:

(1)二元加法運算(

+):如果兩個運算元中有乙個是

string

型別,將把兩個運算元轉換為

string

型別再相加。

如果兩個運算元中沒有字串型別,那麼將把兩個運算元轉換為數值型別再做運算。

舉例:"123"+123 = "123123";

123+123 = 246

true + true = 2

true + undefined = nan

(因為undefined

轉換為數值為

nan,

所有結果為

nan)

true + null = 1 (null

轉換為數字是

0)"123" + null = "123null" (

包含字串將轉化為字串相加

)"123" + undefined = "123undefined"

(undefined

同樣適用)

1 + 2 + "123" = "3123" (1+2

是首先按照數值型計算的

)(2)

二元減乘除運算(

-*/):

因為只有數值型別才有

- * /

運算,所以會先將兩個運算元轉換為數值型再做運算。

"123"-123 = 0

(3)一元取正(

+),取負運算子

(-):

取正或者取負都是針對數值型的運算,所以會將運算元轉換為數值型再做運算。

+"123" = 123

-"123" = -123

+"123e" = nan

+"123f" = nan

+"123e-2" = 1.23 

(4)一元非

(!)運算子

:非運算子需要將運算元轉化為布林型別。

!"123" = false

!!"123" = true

!123 = false

!!123 = true

(5)邏輯運算子(

&&)和(

||):在&&

或者||

的兩側被判斷的時候會被轉為布林型別進行判斷,

但是我在測試的時候卻發現乙個有趣的事情。

&&運算子:如果有乙個項為

false

,那麼表示式返回

false,

如果所有的項都不為

false

,那麼表示式返回最右邊乙個項的原始值。

舉例:123 && 23 && 45

返回45,

而不是我們想象中的

true.

所以如果有

123 && 23 == true

那麼應該是

false。至於

if(123 && 23)

認為是true

那應該是把

23轉換為布林型別了。

||運算子:

對||

測試的結果也和我想象的不一樣,

|| 返回第乙個轉換以後不為

false

的值,如果都為

false,

它將返回最後乙個為

false

的值(未進行型別轉化之前的值)。

舉例:123 || 23

返回123

,而不是想象中的

true.

false || null

返回null

,而不是想象中的

false。

三、型別轉換函式

1.

parsefloat

轉換為浮點數:

字元解析函式獲取每乙個字元直到遇到不屬於數值的字元

,然後返回它已獲取的數值

.幾個需要特別注意的:

""(空字串

) ==> nan

"123e-2" == > 1.23 (

科學計算法是可以識別的)

"010" ==> 10 (8

進製不能識別

)"0x10"==> 0 (16

進製不識別

)"-010" ==> -10 

null,undefined,true,false,new object(),function(){} ==> nan

2.parseint轉換為有符號整數

:

跟parsefloat

相似,但是他會把小數字捨掉(注意不是四捨五入,是完全捨棄,跟

math.floor

處理方式一樣

),而且他可以識別八進位制和

16進製表示方式

:123e-2 == > 1

"123e-2" ==> 123

"010" == > 8 

"0x10" ==> 16

"-010" == > -8 

"-0x10" ==> -16

null,undefined,true,false,new object(),function(){},-infinity +infinity nan ==> nan

3.三個取整函式的區別:(1

)math.ceil():「

天花板」

,很形象吧?就是取大於等於引數的最小整數。

8.7 == > 9

-8.7==> -8(2

)math.floor():"

地板",

取小於等於引數的最小整數。

8.7 ==> 8

-8.7 ==> -9(3

)math.round():"

四捨五入

"取整數。

JavaScript型別轉換

方法主要有三種 轉換函式 強制型別轉換 利用js變數弱型別轉換。1.轉換函式 js提供了parseint 和parsefloat 兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行 對其他型別返回的都是nan not a number ...

javascript 型別轉換

var num number true console.log typeof num num 結果 number 1 var num number false console.log typeof num num 結果 number 0 var num number null console.log...

JavaScript 型別轉換

僅針對字串 轉換規則 1.忽略字串前面的空格,直到找到第乙個非空格符 2.如果第乙個字元不是數字或負號,返回 nan parseint nan 3.如果第乙個字元是數字字元,繼續解析第二個字元,直到解析完所有後續字元或遇到乙個非數字字元 parseint 9527great 9527 parsein...