首页>>前端>>JavaScript->聊聊JS中的类型转换机制

聊聊JS中的类型转换机制

时间:2023-11-30 本站 点击:0

介绍

我们都知道JS中有六种简单数据类型:undefined、null、string、number、boolean、symbol、object(引用类型)

我们在声明的时候只有一种数据类型,在运行的时候才会确定变量的当前类型,如果运算时候的类型和预期不符合,就会触发类型转换机制。

常见的类型转换有:显式转换、隐式转换。

显示转换

显式转换就是我们俗称的强制转换,常见的方法有:

Number()

parselnt()

String()

Boolean()

Number()

是强制把任意类型的值转换为数值,规则如下:

undefined —— NaN

Null —— 0

true —— 1

false —— 0

Symbol —— Throw a TypeError exception

Object —— NaN

String —— NaN

特殊情况:

//在空字符串的时候是转为0的Number('');//0Number('dswe3');//NaN//对象:通常转换成NaN(除了只包含单个数值的数组)Number({a:1})//NaNNumber([1,2,3])//NaNNumber([5])//5

parselnt()

相对于Number转换时只要遇到一个字符无法转换为数值,整个字符串就会被转换为NaN,parselnt函数会逐个解析,遇到不能转换的字符就停止解析,例如:

parselnt('67djj88');//67

String()

可以将任意类型的值转化成字符串,规则如下:

Undefined —— 'Undefined'

Boolean —— 'true' 或者'false'

Number —— 对应数字的字符串

String —— String

Symbol —— Throw a TypeError exception

Object —— '[object Object]'

特殊情况:

String({r:1})//"[objectObject]"String([1,2,3])//"1,2,3"

Boolean()

可以将任意类型的值转为布尔值,规则如下:

可以转换为true的:

true、非空字符串、非零数值、任意对象、N/A

可以转换为false的:

false、空字符串、0、NaN、null、undefined

示例:

Boolean(undefined);//falseBoolean(null);//falseBoolean(0);//falseBoolean(NaN);//falseBoolean('');//falseBoolean({});//trueBoolean([]);//trueBoolean(newBoolean(false));//true

隐式转换

基本上隐式转换时在两种情况下发生的:

比较运算(==、!=、>、<)、if、while 需要布尔值地方

算术运算(+、-、*、/、%)

自动转换为布尔值

除了下面几种会被转化成 false,其他都换被转化成 true

undefined

null

false

+0

-0

NaN

""

自动转换成字符串

遇到预期为字符串的地方,就会将非字符串的值自动转为字符串。

先将复合类型的值转为原始类型的值,再将原始类型的值转为字符串:

'1'+1//'11''1'+true//"1true"'1'+false//"1false"'1'+{}//"1[objectObject]"'1'+[]//"1"'1'+function(){}//"1function(){}"'1'+undefined//"1undefined"'1'+null//"1null"

自动转换成数值

除了+有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值

'5'-'2'//3'5'*'2'//10true-1//0false-1//-1'1'-1//0'5'*[]//0false/'5'//0'abc'-1//NaNnull+1//1undefined+1//NaN


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/3915.html