JavaScript 类型转换是前端开发中非常重要的一环,也是面试中经常被考察的一个点。在本篇文章中,我们将深入探讨 JavaScript 中的类型转换,包括显式类型转换和隐式类型转换,并提供了一些示例代码以帮助读者更好地理解。
显式类型转换
显式类型转换是指通过代码明确地将一个值从一种类型转换为另一种类型。在 JavaScript 中,有三种主要的显式类型转换:字符串转换、数字转换和布尔转换。
字符串转换
将一个值转换为字符串可以使用 toString()
方法或 String()
函数。
var num = 123; console.log(num.toString()); // "123" console.log(String(num)); // "123"
需要注意的是,null
和 undefined
没有 toString()
方法,因此必须使用 String()
函数来转换。
console.log(String(null)); // "null" console.log(String(undefined)); // "undefined"
数字转换
将一个值转换为数字可以使用 parseInt()
函数、parseFloat()
函数或 Number()
函数。其中,parseInt()
函数用于将字符串转换为整数,而 parseFloat()
函数用于将字符串转换为浮点数。
console.log(parseInt("123")); // 123 console.log(parseFloat("3.14")); // 3.14 console.log(Number("123")); // 123
需要注意的是,如果传入的字符串无法转换为数字,则返回 NaN
。
console.log(parseInt("abc")); // NaN
布尔转换
将一个值转换为布尔可以使用 Boolean()
函数。其中,以下值会被转换为 false
:
0
NaN
null
undefined
- 空字符串
""
其他所有值都会被转换为 true
。
console.log(Boolean(0)); // false console.log(Boolean(NaN)); // false console.log(Boolean(null)); // false console.log(Boolean(undefined)); // false console.log(Boolean("")); // false console.log(Boolean(123)); // true console.log(Boolean("hello")); // true
隐式类型转换
隐式类型转换是指在代码执行过程中自动发生的类型转换,通常发生在比较运算、算术运算或逻辑运算中。
比较运算符
在比较运算中,如果两个操作数的类型不同,则 JavaScript 会尝试将它们转换为相同的类型后再进行比较。具体转换规则如下:
- 如果一个操作数是字符串,另一个操作数会被转换为字符串。
- 如果一个操作数是数字,另一个操作数会被转换为数字。
- 如果一个操作数是对象,另一个操作数会被转换为原始值后再进行比较。
console.log("2" > 1); // true,字符串转换为数字进行比较 console.log("01" == 1); // true,字符串转换为数字进行比较 console.log(true == "1"); // true,布尔转换为数字进行比较 console.log({} == "[object Object]"); // true,对象转换为字符串进行比较
算术运算符
在算术运算中,如果操作数不是数字,则 JavaScript 会尝试将它们转换为数字后再进行计算。具体转换规则如下:
- 如果一个操作数是字符串,且能够被解析为数字,则将其转换为数字。
- 如果一个操作数是布尔值,则
true
转换为1
,false
转换为0
。 - 如果一个操作数是对象,则先调用对象的
valueOf()
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/895