1.顯式資料型別轉換
顯式轉換:程式員主動呼叫語法去轉換資料型別,語意更加明確
-
注意:資料型別的轉變并不會改變原來變數的值,而是會產生一個新的值
-
例如:
(1) let num = '10'; -
parseInt(num):
-
-
為什么要有資料型別轉換?
-
有時候想要進行某種計算的時候,由于資料型別不同往往會產生一些錯誤的結果,為了避免這種結果,我們需要將某種資料型別轉化為其他資料型別
-
例如:prompt()輸入框得到的資料的型別是string,如果想要進行數學計算則需要轉成number型別,否則會計算出錯
-
-
-
什么是顯示型別轉換:程式員主動轉換(可以理解為使用關鍵字來轉換)
-
這種方式代碼易讀性更高
-
1.其他型別轉換成number型別
/**轉換成number
* 第一種方式:`parseInt()`
* * 作用:轉換整數
* * 從左往右決議,遇到非數字結束(停止決議),將決議好的整數回傳
* * 如果第一個字符不是數字或者符號就回傳NaN
* 第二種方式:`parseFloat()`
* * 作用:轉換小數
* * 與parseInt()最大的區別就是可以決議字串的第一個小數點
* 第三種方式: `Number()`
* 作用:布爾型別轉換成數字
* * 可以把任意值轉換成數值,如果要轉換的字串只要有一個不是數字,回傳NaN
*/
console.log ( Number ( "123" ) );//123
console.log ( Number ( "123.1.1abc" ) ); //NaN 只要有一個字符不是數字,得到就是NaN
console.log ( parseInt ( "123.1.1abc" ) ); //123 從左往右決議,遇到非數字結束
console.log ( parseFloat ( "123.1.1abc" ) );//123.1 與parseInt唯一的區別就是可以識別第一個小數點
//一般數字字串使用parseInt和parseFloat,其他資料型別轉數字使用Number()
console.log ( Number ( true ) ); //1布爾型別轉換number會得到數字0(false)和1(true)
console.log ( Number ( "" ) ); //0 空字串轉number會得到0
//js基礎面試題
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0
2.其他型別轉換成string型別
-
1.第一種方式:
變數名.toString()-
如果變數的值為undefined或者null,則會報錯
-
-
2.第二種方式:
String(變數名)-
與第一種方式的唯一區別就是如果變數的值為undefined或者null不會報錯,會得到undefined或者null
-
let a = null;
//1.常用: String ( )
//特點:可以識別undefined與null
console.log ( String ( null ) );
console.log ( typeof String ( a ) );
// //2. 變數名.toString ()
//特點:無法識別undefined與null,程式會報錯
console.log ( a.toString () );
3.其他型別轉換成boolean型別
只有一種方式: Boolean(變數名)
-
官網檔案中有八種情況得到的false:
0、-0、null、false、NaN、undefined、或者空字串("")、 document.all() -
其他一切均為true
console.log ( Boolean ( 0 ) ); //false
console.log ( Boolean ( -0 ) ); //false
console.log ( Boolean ( null ) ); //false
console.log ( Boolean ( false ) ); //false
console.log ( Boolean ( undefined ) ); //false
console.log ( Boolean ( '' ) ); //false
console.log ( Boolean ( NaN ) ); //false
2.隱式資料型別轉換
隱式轉換:運算子兩邊資料型別不一致,編譯器自動幫我們轉換一致在計算,這是js的語法特點
隱式轉換
-
1.轉成string型別:+號兩邊如果有一邊是字串,則會把另一邊轉換成字串,然后進行拼接
-
2.轉成number型別:以下幾種運算子會將任何資料轉換成number型別再運算,如果無法轉換則為NaN
-
數學正號 : +num
-
當
+/-號寫在一個變數名的前面,此時表示數學的正/負數
-
-
自增自減(++ --)
-
算術運算子(+ - * / %)
-
比較運算子(> < >= <= == != \=\=\= !==)
-
說明:全等與不全等會先比較值(此時會隱式轉換再比較),然后再比較資料型別
-
-
-
3.轉成boolean型別:邏輯非(!)會將任何資料轉為boolean型別再運算
-
4.+號有三種含義:數學正負號(轉成number)、算術運算子(轉成number)、字串連接符(轉成string)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
/*
1. 顯式轉換 : 程式員主動使用語法來轉換(閱讀性最高)
2. 隱式轉換 : 如果運算子兩邊資料型別不一致,編譯器偷偷的幫我們轉成一致再計算,
(1)其他資料型別轉number :
數學正號 : +num
自增自減: ++ --
算術運算子: + - * / %
關系運算子 : > < >= <=
(2)其他資料型別轉string : +
(3)其他資料型別轉boolean : !
*/
console.log('100' - 1); // Number('100') - 1 = 100 - 1 = 99
//1.其他資料型別轉number :
// 數學正號 : +num
// 自增自減: ++ --
// 算術運算子: + - * / %
console.log(+'10'); // Number('10')
console.log('海海' - 100); // Number('海海') - 100 = NaN - 100 = NaN
console.log(10 - '1'); // 10 - Number('1') = 10 - 1 = 9
//2. 其他資料型別轉string : +
console.log('1' + 1); //'1' + String(1) = '1' + '1' = '11'
/*
注意點 : 算術運算子 + 轉換規則 與 連接符 + 轉換規則
*/
console.log('1' + true); //1true 連接符 ‘1’ + String(true) = '1' + 'true' = '1true'
console.log(1 + true); //2 算術運算子 1 + Number(true) = 1 + 1 = 2
console.log(1 + undefined); //NaN 算術 1 + Number(undefined) = 1 + NaN = NaN
console.log(1 + null); //1 算術 1 + Number(null) = 1+ 0 = 1
console.log('1' + null); //1null 連接 '1' + String(null) = '1' + 'null' = '1null'
//其他資料型別轉boolean : !
//取反 : true變false false變true
console.log(!1); //(1)!Boolean(1) = !true = false
console.log(!!''); //(1)!!Boolean('') (2)!!false (3)!true = false
</script>
</body>
</html>
上一章:JavaScript入門第六章(資料型別比較)
下一章:JavaScript入門第八章(流程控制與分支結構)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/291329.html
標籤:其他
