目录
# 前言
数据类型转换是我们在前端开发中经常遇到的场景,一般而言,在 JavaScript 中类型转换有三种情况:
- 转换为数字(调用 Number(),parseInt(),parseFloat()方法)
- 转换为字符串(调用.toString()或 String()方法)
- 转换为布尔值(调用 Boolean()方法)
需要注意的是:null、undefined 没有.toString() 方法。
# 转换为数字
# Number(string) 方法
Number() 可以把任意值转换成数字,如果要转换的目标对象(一般是字符串)中有不是数字的值,则会返回 NaN。
Number('1'); // 1
Number(true); // 1
Number('123s'); // NaN
Number({}); //NaN
# parseInt(string, radix)
解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
parseInt('2'); //2
parseInt('2', 10); // 2
parseInt('2', 2); // NaN
parseInt('a123'); // NaN 如果第一个字符不是数字或者符号就返回NaN
parseInt('123a'); // 123
# parseFloat(string)
解析一个参数并返回一个浮点数。
parseFloat('123a'); //123
parseFloat('123a.01'); //123
parseFloat('123.01'); //123.01
parseFloat('123.01.1'); //123.01
# 隐式转换
let str = '123' - str; // -123
str +
1 + // '1231'
str +
1; // 124
let res = str - 1; //122
# 转换为字符串
# toString()
将目标对象转换为字符串。
注意
null,undefined 不能调用。
Number(123).toString() //'123'
[].toString() //''
true.toString() //'true'
# String()
String() 的作用比较强大,它可以将任何传入的值都转为字符串。
String(123); //'123'
String(true); //'true'
String([]); //''
String(null); //'null'
String(undefined); //'undefined'
String({}); //'[object Object]'
# 隐式转换
当 + 两边有一个是字符串,另一个是其它类型时,会先把其它类型转换为字符串再进行字符串拼接,返回字符串:
let a = 1;
a + ''; // '1'
# 转换为布尔值
# Boolean()
Boolean() 方法会将以下值转换为 false:
- 0
- “”
- null
- undefined
- NaN
其余的所有值都会被转换为 true。
Boolean(''); //false
Boolean(0); //false
Boolean(1); //true
Boolean(null); //false
Boolean(undefined); //false
Boolean(NaN); //false
Boolean({}); //true
Boolean([]); //true
# 条件语句
在条件语句中,我们一般不会主动进行布尔转换。
let a;
if (a) {
//... //这里a为undefined,会转为false,所以该条件语句内部不会执行
}
# 隐式转换
let str = '111';
console.log(!!str); // true
# 总结
以上就是 JavaScript 基本数据类型转换相关的知识总结,其中最需要注意的是隐士转换。
