返回

深入剖析 JS 类型转换,揭开神秘面纱

前端

JS 的类型转换到底是什么?

深夜十一点,刷着朋友圈,突然刷到这么一张图,内心:怎么样,我 JS 厉害吧 手动滑稽。

然而,在我仔细把所有的 JS 语句都看完之后,发现自己还有几个不知原因.... emmmm,应该不只有我一个人吧!

看了一下,不知道原因的大部分都是 JS 的类型转换相关的问题,所以就了解了一波。

我发现,很多学习过 JS 的同学,对类型转换还是存在一些疑惑,比方说,什么叫类型转换?转换规则是什么?等等诸如此类的问题。

今天,我们就来聊聊 JS 中的类型转换。

什么是类型转换?

类型转换,顾名思义,就是把一个变量从一种类型转换成另一种类型。

在 JS 中,类型转换可以分为两种:隐式类型转换和显示类型转换。

隐式类型转换

隐式类型转换,是指 JS 引擎在执行代码时,自动将一种类型转换成另一种类型。

举个例子,我们来看下面的代码:

const a = 1 + '2';
console.log(a); // 12

在这个例子中,JS 引擎会自动将数字 1 转换成字符串 '1',然后将两个字符串相加,得到结果 '12'。

显示类型转换

显示类型转换,是指我们手动将一种类型转换成另一种类型。

在 JS 中,我们可以使用以下几种方法来进行显示类型转换:

  • Number(): 将一个值转换成数字
  • String(): 将一个值转换成字符串
  • Boolean(): 将一个值转换成布尔值

举个例子,我们来看下面的代码:

const a = Number('1');
console.log(a); // 1

const b = String(2);
console.log(b); // '2'

const c = Boolean(0);
console.log(c); // false

在这个例子中,我们分别使用了 Number(), String(), Boolean() 这三个方法将值转换成不同的类型。

类型转换规则

在 JS 中,类型转换遵循以下规则:

  • 数字和字符串可以相互转换。
  • 布尔值可以转换成数字和字符串。
  • 对象和数组不能直接转换成其他类型。

举个例子,我们来看下面的代码:

const a = 1 + '2'; // '12'
const b = '1' - 2; // -1
const c = true + 1; // 2
const d = false + 1; // 1
const e = [1, 2, 3] + 1; // '1,2,31'
const f = {a: 1, b: 2} + 1; // '[object Object]1'

在这个例子中,数字和字符串可以相互转换,布尔值可以转换成数字和字符串,对象和数组不能直接转换成其他类型。

总结

在本文中,我们讨论了 JS 中的类型转换。

我们了解了类型转换的概念,隐式类型转换和显示类型转换两种类型转换方式,以及类型转换的规则。

希望本文对您有所帮助。