这篇文章浅谈一下 JavaScript 中的类型转换。
在编程中,类型转换是将一种类型的数据转换为另一种类型的过程。例如:将 String 数据转换为 Number。 JavaScript 中有两种类型的类型转换:
- 隐式转换 - 自动类型转换
- 显式转换 - 手动类型转换
JavaScript 隐式转换
1. 隐式转换为字符串
在某些情况下,JavaScript 会自动将一种数据类型转换为另一种(正确的类型)。这称为隐式转换。 例如隐式转换为String:
// 使用+号使数字转换为字符串类型
let result;
result = '3' + 2;
console.log(result) // "32"
result = '3' + true;
console.log(result); // "3true"
result = '3' + undefined;
console.log(result); // "3undefined"
result = '3' + null;
console.log(result); // "3null"
注意:将数字添加到字符串时,JavaScript 会在连接之前将数字转换为字符串
2. 隐式转换为数字
// 数字字符串使用 - , / , * 转换为数字类型运算
let result;
result = '4' - '2';
console.log(result); // 2
result = '4' - 2;
console.log(result); // 2
result = '4' * 2;
console.log(result); // 8
result = '4' / 2;
console.log(result); // 2
3. 非数字字符串结果为 NaN
// 非数字字符串使用 - , / , * 转换为 NaN
let result;
result = 'hello' - 'world';
console.log(result); // NaN
result = '4' - 'hello';
console.log(result); // NaN
4. 隐式布尔转换为数字
// 如果使用布尔值,true 为 1,false 为 0
let result;
result = '4' - true;
console.log(result); // 3
result = 4 + true;
console.log(result); // 5
result = 4 + false;
console.log(result); // 4
注意:JavaScript 认为 0 为假,所有非零数字为真。而且,如果将 true 转换为数字,则结果始终为 1。
5. null 转换为数字
// 与 number 一起使用时 null 为 0
let result;
result = 4 + null;
console.log(result); // 4
result = 4 - null;
console.log(result); // 4
6. undefined 与数字、布尔值或 null 一起使用
// 带有数字、布尔值或空值与undefined 算术运算给出 NaN
let result;
result = 4 + undefined;
console.log(result); // NaN
result = 4 - undefined;
console.log(result); // NaN
result = true + undefined;
console.log(result); // NaN
result = null + undefined;
console.log(result); // NaN
JavaScript 显式转换
可以根据需要将一种数据类型转换为另一种数据类型。手动执行的类型转换称为显式类型转换。 在 JavaScript 中,显式类型转换是使用内置方法完成的。
1. 显式转换为数字
要将数字字符串和布尔值转换为数字,可以使用 Number()。例如,
let result;
// string to number
result = Number('324');
console.log(result); // 324
result = Number('324e-1')
console.log(result); // 32.4
// boolean to number
result = Number(true);
console.log(result); // 1
result = Number(false);
console.log(result); // 0
在 JavaScript 中,空字符串和空值返回 0。例如,
let result;
result = Number(null);
console.log(result); // 0
let result = Number(' ')
console.log(result); // 0
如果字符串是无效数字,则结果将为 NaN。例如,
let result;
result = Number('hello');
console.log(result); // NaN
result = Number(undefined);
console.log(result); // NaN
result = Number(NaN);
console.log(result); // NaN
还可以使用 parseInt()、parseFloat()、一元运算符 + 和 Math.floor() 从字符串生成数字。例如,
let result;
result = parseInt('20.01');
console.log(result); // 20
result = parseFloat('20.01');
console.log(result); // 20.01
result = +'20.01';
console.log(result); // 20.01
result = Math.floor('20.01');
console.log(result); // 20
2. 显式转换为字符串
要将其他数据类型转换为字符串,可以使用 String() 或 toString()。例如,
//number to string
let result;
result = String(324);
console.log(result); // "324"
result = String(2 + 4);
console.log(result); // "6"
//other data types to string
result = String(null);
console.log(result); // "null"
result = String(undefined);
console.log(result); // "undefined"
result = String(NaN);
console.log(result); // "NaN"
result = String(true);
console.log(result); // "true"
result = String(false);
console.log(result); // "false"
// using toString()
result = (324).toString();
console.log(result); // "324"
result = true.toString();
console.log(result); // "true"
注意: String() 接受 null 和 undefined 并将它们转换为字符串。但是,当传递 null 时,toString() 会出错
3. 显式转换为布尔值
要将其他数据类型转换为布尔值,可以使用 Boolean()。 在 JavaScript 中,undefined、null、0、NaN、'' 转换为 false。例如,
let result;
result = Boolean('');
console.log(result); // false
result = Boolean(0);
console.log(result); // false
result = Boolean(undefined);
console.log(result); // false
result = Boolean(null);
console.log(result); // false
result = Boolean(NaN);
console.log(result); // false
所有其他值都为 true。例如,
result = Boolean(324);
console.log(result); // true
result = Boolean('hello');
console.log(result); // true
result = Boolean(' ');
console.log(result); // true
最后附上JavaScript 类型转换表
该表显示了 JavaScript 中不同值到字符串、数字和布尔值的转换。
| 值 | 字符串转换 | 数字转换 | 布尔值转换 |
|---|---|---|---|
| 1 | "1" | 1 | true |
| 0 | "0" | 0 | false |
| "1" | "1" | 1 | true |
| "0" | "0" | 0 | true |
| "ten" | "ten" | NaN | true |
true | "true" | 1 | true |
false | "false" | 0 | false |
null | "null" | 0 | false |
undefined | "undefined" | NaN | false |
| '' | "" | 0 | false |
| ' ' | " " | 0 | true |
如有缺漏欢迎补充,希望大家coding愉快