数据类型转换就是将一种数据类型转换成另外一种数据类型。
类型转换分为隐含转换和强制转换。
隐含转换在前面一战中,已介绍。本节着点说明强制转换。
数据类型有:
- 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)