国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript類型轉換方法及需要注意的問題小結(挺全面)

2019-11-21 00:08:38
字體:
來源:轉載
供稿:網友
一、類型轉換的方法和應該注意的問題:
1.
轉換為布爾型:
1)用兩次非運算(!):
!!5 ==> true
2)用布爾型的構造函數:
new Boolean(5) == > true
值轉換為布爾類型為false
0
+0-0NaN""(空字符串),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.
三個取整函數的區別
1Math.ceil():“天花板,很形象吧?就是取大于等于參數的最小整數。
8.7 == > 9
-8.7==> -8
2Math.floor():"地板",取小于等于參數的最小整數。
8.7 ==> 8
-8.7 ==> -9
3Math.round():"四舍五入"取整數。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 平乡县| 正安县| 池州市| 渭源县| 比如县| 锡林浩特市| 蒲城县| 霍城县| 泰州市| 绥芬河市| 天柱县| 渝北区| 棋牌| 若羌县| 都江堰市| 桂阳县| 吴旗县| 常熟市| 刚察县| 阳曲县| 虞城县| 霍山县| 鄄城县| 西林县| 玉溪市| 革吉县| 报价| 崇礼县| 长丰县| 元朗区| 洪湖市| 西峡县| 松溪县| 普兰县| 嵊州市| 富顺县| 丁青县| 梁平县| 洛宁县| 惠来县|