數據類型轉換就是將一種數據類型轉換成另外一種數據類型。
類型轉換分爲隱含轉換和強制轉換。
隱含轉換在前面一戰中,已介紹。本節着點說明強制轉換。
數據類型有:
- String 字符串
- Number 數值
- Boolean 布爾值
- null 空值
- undefined 未定義
- object 對象
- function
- symbol
3 種對象類型:
- object
- Date
- Array
其中String、Number、Boolean、null、undefined屬於基本數據類型而Object屬於引用數據類型。
檢測數據類型:typeof 操作符
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 沒有聲明)
typeof null // 返回 object
常有 3 種方式的轉換:
- 轉換爲字符串類型
- 轉換成數字型
- 轉換成布爾類型
JS是弱類型語言,變量的數據類型是由變量值的數據類型決定的。
一、轉換爲字符串
方式 | 說明 | 案例 |
---|---|---|
toString() | 轉換爲字符串 | var num=1;num.toString(); |
String() 強制轉換 | 轉換爲字符串 | var num=1;String(num); |
(一)、使用 toString( )方法
只適用Number、Boolean類型的數據,Null和Undefined類型數據會報錯,並不適用。
var num = 123;
console.log(num);
console.log(typeof num);
var str=num.toString();
console.log(str);
(二)調用 String() 函數
語法:String(被轉換對象)
- 使用String()做 強制轉換的時候,對於Number、Boolean類型的數據實際上就是調用toString( )方法。
- 對於null和undefined,就不會調用toString( )方法,它會直接將 null 轉化爲 “null” ,將 undefined 轉化爲 “undefined”
var num = 123;
console.log(String(num));
console.log(typeof String(num));
二、轉換爲數字型
方式 | 說明 | 案例 |
---|---|---|
parseInt(串) | 轉換成整數數值型 | var num=parseInt(“123”); |
parseFloat(串) | 轉換爲浮點數值型 | var num=parseFloat(“12.12”); |
Number() 強制轉換 | 轉化爲數值型 | var num=Number(“1312”); |
(一)parseInt() 函數轉換爲數值型
parseInt( )函數可以將字符串中有效的整數內容提取出來,將字符型轉換爲 數字型的;
parseInt( )函數在解析字符串的時候按照從左到右的順序
console.log(parseInt('32.1')); // 3 取整
console.log(parseInt('123aba')); // 會取到字符串中的整數部分,從左向右
console.log(parseInt('m111px')); // NaN
(二)parseFloat() 函數轉換爲數值型
parseFloat( ) 函數可以獲得有效的小數,並且將字符型轉換爲數字型。
parseFloat( )函數在解析字符串的時候按照從左到右的順序,不能解析除了數字以外的文本。
console.log(parseFloat('3.1')); //3.1
console.log(parseFloat('123bbbb')); //去掉後面部分,只保留數字
console.log(parseFloat('m123ccc')); //NaN
-
如果對非String類型數據使用parseInt( ) 或是parseFloat( ) ,它會現將其轉化爲String,然後再進行操作。
-
由於 parseInt( ) 或是parseFloat( ) 無法解析非數字類型的字符,所以輸出 NaN,但是數據類型還是變爲 number 數字類型。
(三)使用Number() 函數(強制轉換)
調用 Number() 函數使其他類型的數據轉換成數值型
1、當需要轉換的字符串引號引的不是數字
var abc=Number('this one');
console.log(abc);console.log(typeof abc);
2、字符串→Number 轉換情況:
- 如果是純數字的字符串,直接將其轉換爲數字;
- 如果字符串中有非數字內容,則轉換爲NAN(Not A Number);
- 如果字符串是一個空串或是一個全部由空格組成的字符串,則轉換爲0。
3、Boolean值→Number 轉換情況:
- 如果是true,轉換爲1;
- 如果是false,轉換爲0。
4、null值→Number 轉換情況:
如果是null(空值),轉換爲0。
5、undefined→Number 轉換情況:
如果是undefined,轉換爲NAN(Not A Number)