数据类型转换

js的数据类型只有三种情况:

1、转换为布尔值

2、转换为数字

3、转换为字符串

初始值 转换类型 结果
number boolean 除了0,-0,NaN,其他都为true
string boolean 除了空字符串都为true
undefine,null boolean false
引用类型 boolean true
boolean,函数,symbol String  'true'
number String '5'
数组 String [1,2]=>'1,2'
对象 String '[object,object]'
String number '1'=>1, a=>NaN
数组 number 空数组转换为0,存在一个元素且为数字的转换为数字,其他的转换为NaN
NULL number 0
除了数组的引用类型 number NaN
symbol number 抛出错误

一、对象转转换原始类型

对象在转换类型的时候,会调用内置的【toprimitive】函数,该方法在转换为原始类型调用优先级最高,该函数的算法逻辑为:

1、如果已经是原始类型了,就不需要转换了

2、调用 x.valueOf(),如果转换为基础类型,就返回转换的值

3、调用x.toString(),如果转换为基础类型,就返回转换的值

4、如果都没有返回原始类型,就报错

二、运算符转换规则

四则运算符特点

1、如果其中一方为字符串,那么另一方也会被转换为字符串

2、如果一方不是字符串或者数字,就会将它转换成字符串或者数字

!注:对于'a'+ +'b',得到的结果为aNaN,因为+‘b’得到的结果为NaN,类似的可使用+‘1’快速得到number类型。

           除了加法运算符,其他的只要一方为数字,则另一方也会被转换为数字。

比较运算符特点:

如果是对象,则使用toprimitive转换类型,如果是字符串,则使用unicode字符索引来比较。

三、强制类型转换

强制转换方法包括Number(),parseInt( ),parseFloat(),toSting(),String(),boolean()

四、隐式类型转换规则

==运算符

1、如果其中一个为null或者undefine,则 另一方也必须为null或者undefined,才会为true

2、如果其中有symbol,则返回false

3、如果两个值为number和String类型,则会将字符串转换为number。

4、如果其中一个操作值为boolean,则转换成number

+运算符:

+不仅可以用作数字相加,还能用作字符串相连,

1、如果其中一个为字符串,另一个是null,boolean,undefine类型,则调用toString()对字符串进行拼接,如果是纯对象,数组,正则等,则调用对象的转换方法进行拼接

2、如果其中一个为数字,另一个为null,boolean,undefine,则转换成数字,对象也转换成数字相加。

3、如果是一个数字和一个字符串,则按照字符串规则进行拼接。

posted @   大坏坏狼  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示