返回

js类型:隐式转换,硬转硬,软变软,JS隐式转换你了解多少?

前端

js类型简介

在js中,基础类型的数据有六种:undefined、null、number、string、boolean、symbol、object。

  • undefined:表示变量未被赋值
  • null:表示变量为null值
  • number:表示数字
  • string:表示字符串
  • boolean:表示布尔值,只有true和false
  • symbol:表示唯一标识符
  • object:表示对象

在js中,一切皆对象,除基础类型外,其他所有数据都是object类型,比如,数组、函数、正则表达式等。

显示转换与隐式转换

在js中,显示转换是指显式使用强制类型转换运算符将一种类型的数据转换为另一种类型的数据。强制类型转换运算符包括Number()String()Boolean()parseInt()parseFloat()等。

在js中,隐式转换是指JavaScript引擎自动将一种类型的数据转换为另一种类型的数据。隐式转换主要发生在以下几种情况:

  • 算术运算:当两种不同类型的数据进行算术运算时,JavaScript引擎会自动将其中一种数据转换为另一种数据。例如,当数字类型数据与字符串类型数据进行加法运算时,JavaScript引擎会自动将字符串类型数据转换为数字类型数据。
  • 比较运算:当两种不同类型的数据进行比较运算时,JavaScript引擎会自动将其中一种数据转换为另一种数据。例如,当数字类型数据与字符串类型数据进行比较运算时,JavaScript引擎会自动将字符串类型数据转换为数字类型数据。
  • 赋值运算:当一种类型的数据赋值给另一种类型变量时,JavaScript引擎会自动将数据转换为变量的类型。例如,当字符串类型数据赋值给数字类型变量时,JavaScript引擎会自动将字符串类型数据转换为数字类型数据。

隐式转换规则

在js中,隐式转换有以下规则:

  • 如果一种数据可以转换为另一种数据而不会丢失信息,那么JavaScript引擎会自动进行转换。例如,数字类型数据可以转换为字符串类型数据,而不会丢失信息,因此JavaScript引擎会自动进行转换。
  • 如果一种数据不能转换为另一种数据而不会丢失信息,那么JavaScript引擎不会进行转换。例如,字符串类型数据不能转换为数字类型数据而不会丢失信息,因此JavaScript引擎不会进行转换。
  • 如果一种数据可以转换为多种数据,那么JavaScript引擎会选择最接近的数据类型进行转换。例如,字符串类型数据可以转换为数字类型数据或布尔类型数据,JavaScript引擎会选择最接近的数字类型数据进行转换。