强制类型转换:指将一个数据类型强制转换为其他的数据类型
通常三种转换
转换为字符串类型
转换为数字型
转换为布尔型
转换为字符串类型
(1)toString()方法
调用被转换数据类型的toString()方法 语法:变量.to String( let res = data.toString())
该方法不会影响到原变量,它会将转换的结果返回 语法:str=变量.to.String()
注意:null和undefined这两个值没有toString的方法,如果调用他们会报错
javascript
// 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
// 数据类型的相互转换
// 将数据转成string类型 Number Boolean,Undefined,Null
let data = 1
data = true
data = undefined
data = null
// 方式一:toString() 变量名.toString()
//null, undefined无法通过.toString()方式转换为string类型
// let res = data.toString()
console.log('data转换前', data, typeof data);
console.log('data转换后', res, typeof res);
(2)String()
调用String()函数,并将被转换的数据作为参数传递给函数 语法:String(变量)
使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString的方法
与to string的区别:但对于null和undefined,就不会调用toString()方法, 它会将null直接转换为"null", 将undefined 直接转换为"undefined"
javascript
// 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
// 数据类型的相互转换
// 将数据转成string类型 Number Boolean,Undefined,Null
let data = 1
data = true
data = undefined
data = null
// 方式一:toString() 变量名.toString()
//null, undefined无法通过.toString()方式转换为string类型
// let res = data.toString()
// 方式二:String(变量名)
// let res = String(data)
console.log('data转换前', data, typeof data);
console.log('data转换后', res, typeof res);
(3)拼接字符串(隐式转换)
和字符串拼接的结果都是新字符串 语法:变量+''
javascript
// 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
// 数据类型的相互转换
// 将数据转成string类型 Number Boolean,Undefined,Null
let data = 1
data = true
data = undefined
data = null
// 方式一:toString() 变量名.toString()
//null, undefined无法通过.toString()方式转换为string类型
// let res = data.toString()
// 方式二:String(变量名)
// let res = String(data)
// 方式三:隐式转换 语法:变量+'' 任意类型数据+字符串=新的字符串
let res = data + ''
console.log('data转换前', data, typeof data);
console.log('data转换后', res, typeof res);
转换为数字型(重点)
(1) 使用Number()函数
字符串-->数字
1:如果是纯数字的字符串,则直接将其转换为数字
2:如果字符串中有非法的数字的内容,则转换为NaN
3:如果字符串是一个空串,或者全是空格的字符串,则转换为0
布尔值--->数字
true--1 false--0
Null --->数字 0
Undefined --->数字 NaN
(2) parseInt(变量) 取有效整数
(3) parseFloat() 取有效浮点数
javascript
方式一、调用Number(变量)函数
let s1 = "hello"; //字符串类型
s1 = "123";
s1 = "";
s1 = " ";
s1 = true; //布尔值类型
s1 = false;
s1 = undefined;
s1 = null;
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = Number(s1);
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);
方式二 parseInt(变量) 取有效整数*/
方式三 parseFloat() 取有效浮点数 */
注意:如果对非String使用parseFloat()跟parseInt(),
它会先将其转换为String,然后再操作 */
let s1 = "123abc";
s1 = "abc123";
s1 = "123";
s1 = true;
s1 = undefined;
s1 = "1.23a";
s1='1a1.2bc'
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = parseInt(s1);
let res = parseFloat(s1);
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);
(4)算术运算 -0 *1 /1 隐式转换
javascript
let s1 = "123abc";4
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = s1 / 1;
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);
(5)正号
javascript
let s1 = "123";
s1=true
s1=false
s1=undefined
s1=null
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = +s1;
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);
小练习
javascript
小练习
let age = +prompt("请输入你的年龄");
console.log(Number(age) + 1);
console.log(parseInt(age) + 1);
console.log(parseFloat(age) + 1);
console.log(age*1 + 1);
console.log(age + 1);
转换为布尔型
Boolean()函数
将其他类型转成布尔值
- 数字-->布尔 除了0跟NaN是false,其他的都是true
- 字符串-->布尔 除了空串是false,其余都是true
- null和undefined都会转换为false
- 对象会转换为true
面试题:转为布尔值为false的六种情况
// 0,NaN,'',undefined,null,false
(1)Boolean(变量)函数转布尔值
javascript
number,string,undefined,null
方式一、 Boolean(变量)函数转布尔值
let s1 = 1;
s1=2
s1=0
s1=-2
s1=NaN
s1='hello'
s1='0'
s1=' '
s1=''
s1=undefined
s1=null
s1={}
s1=[]
s1=function(){}
s1=false
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = Boolean(s1);
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);
(2)两次取反 双非 !! 隐式转换
javascript
let s1 = "";
s1 = "abc";
s1 = undefined;
s1 = null;
s1 = 123;
s1 = 0;
console.log("原值:", s1);
console.log("原值类型:", typeof s1);
let res = !!s1;
console.log("转换之后值:", res);
console.log("转换之后值类型:", typeof res);