强制类型转换
1.转换为字符串类型
toString()- 不会影响原变量
- Number和Boolean可以用这个转换
- null和undefined这两个值没有toString()方法
变量名称.toString()的方式前面不能是常量, 因为常量不能被改变
let value = 123;
console.log(value);
// 在谷歌浏览器的控制台中是Number类型是蓝色的
// 以下代码的含义: 将value变量中存储的数据拷贝一份, 然后将拷贝的数据转换为字符串之后返回
let str = value.toString();
console.log(str);
// 在谷歌浏览器的控制台中是String类型是灰色的
// 注意点: 不能使用常量直接调用toString方法, 因为常量是不能改变的
let str2 = 123.toString();
String(常量or变量);- 对于null和undefined,它会将 null 直接转换为 "null"。将 undefined 直接转换为 "undefined"
- 对于Number和Boolean而言,实际上就是调用toString()方法
- 可以用常量是因为根据传入的值重新生成一个新的值, 并不是修改原有的值
变量or常量 + " " / 变量or常量 + ''- 本质其实就是调用String()函数
let str = 123 + '';
console.log(str); >>'123'
console.log(typeof str); >>String
2.转换为数值类型
-
String >> 数值
- 如果字符串中都是数值, 那么就正常转换
- 如果字符串是一个空串" " / "", 那么转换之后是0
- 如果字符串中不仅仅是数字, 那么转换之后是NaN
-
Boolean >> 数值
- true转换之后是1
- false转换之后是0
-
undefined >> 数值
- 转换之后是NaN
-
null >> 数值
-
转换之后是0
-
空字符串/false/null转换之后都是0,字符串中不仅仅是数字/undefined转换之后是NaN,其它的正常转换
-
-
转换方法
Number(常量or变量);
let str = "123"; console.log(str); >>"123" console.log(typeof str); >>String let num = Number(str); console.log(num); >>123 console.log(typeof num); >>Number-
通过数学运算中的+号和-号来转换
-
虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性
-
本质上就是调用了Number函数
-
let str = "123"; let num = +str; let num = -str;-
parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)-
从左至右的提取数值, 一旦遇到非数值就会立即停止,如果还没有提取到数值, 那么就返回NaN
-
parseInt/parseFloat都会将传入的数据当做字符串来处理
-
let str = "3.14px"; let num = parseFloat(str); console.log(num); >>3.14 console.log(typeof num); >>Number let value = true; let num = parseInt(value); // parseInt("true"); console.log(num); >>NaN console.log(typeof num); >>Number
3.转换为布尔类型
- String >> 布尔
- 字符串中有内容为true, 字符串中没有内容为false
- Number >> 布尔
- 只有数值是0才会转换为false, 其它的都会转换为true
- 如果是NaN也会转换为false(在JavaScript中NaN属于Number类型)
- undefined >> 布尔
- 转换为false
- null >> 布尔
- 转换为false
- 空字符串/0/NaN/undefined/null 会转换成false, 其它的都是true
- 方法:
Boolean(常量or变量)
let num = NaN;
console.log(typeof num); >>number
let flag = Boolean(num);
console.log(flag); >>false
console.log(typeof flag); >>boolean