一、型別轉換的方法和應該注意的問題:
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...