JavaScript 类型转换

JavaScript 类型转换

在JavaScript中有 5 种不同的数据类型
string
number
boolean
object
function
3 种对象类型:
Object
Date
Array
2 个不包含任何值的数据类型:
null
undefined
类型转换分为“显示类型转换“和“隐式类型转换”。顾名思义,显示类型转换就是以各种转换函数进行的转换;隐式类型转换是暗藏在表达式里面的转换。
强制类型转换
通过String(),Number(),Boolean()函数强制转换
在这里插入图片描述
隐式转换记住以下三点:
1.字符串加数字,数字就会转成字符串。
2.数字减字符串,字符串转成数字。
如果字符串不是纯数字就会转成NaN。
字符串减数字也一样。
两个字符串相减也先转成数字。
3.乘,除,大于,小于跟减的转换也是一样。
由于 js 是个弱类型语言,所以不是所有运算都要求类型一致,Js 为了一些运算可以执行,使用了隐式类型转换。也就是说,在一些计算中,系统会悄悄的完成类型转换
在这里插入图片描述
Operator + 可用于将变量转换为数字:
实例:
在这里插入图片描述
如果变量不能转换,它仍然会是一个数字,但值为 NaN (不是一个数字):
实例:
在这里插入图片描述
全局方法 Number() 可将布尔值转换为数字。
实例:
在这里插入图片描述
全局方法 Number() 可将日期转换为数字。
实例:
在这里插入图片描述
日期方法 getTime() 也有相同的效果。
逻辑操作符(!、&&、||)
逻辑非(!)操作符首先通过Boolean()函数将它的操作值转换为布尔值,然后求反。
如果第一个操作数经Boolean()转换后为true,则返回第二个操作值,否则返回第一个值(不是Boolean()转换后的值)
如果第一个操作值为null,返回null
如果第一个操作值为NaN,返回NaN
如果第一个操作值为undefined,返回undefined
逻辑或(||)操作符,如果一个操作值不是布尔值,遵循以下规则:

如果第一个操作值经Boolean()转换后为false,则返回第二个操作值,否则返回第一个操作值(不是Boolean()转换后的值)
对于undefined、null和NaN的处理规则与逻辑与(&&)相同
关系操作符(<, >, <=, >=)
关系操作符的操作值也可以是任意类型的,所以使用非数值类型参与比较时也需要系统进行隐式类型转换:

如果两个操作值都是数值,则进行数值比较
如果两个操作值都是字符串,则比较字符串对应的字符编码值
如果只有一个操作值是数值,则将另一个操作值转换为数值,进行数值比较
如果一个操作数是对象,则调用valueOf()方法(如果对象没有valueOf()方法则调用toString()方法),得到的结果按照前面的规则执行比较
如果一个操作值是布尔值,则将其转换为数值,再进行比较
相等操作符(==)
相等操作符会对操作值进行隐式转换后进行比较:

如果一个操作值为布尔值,则在比较之前先将其转换为数值
如果一个操作值为字符串,另一个操作值为数值,则通过Number()函数将字符串转换为数值
如果一个操作值是对象,另一个不是,则调用对象的valueOf()方法,得到的结果按照前面的规则进行比较
null与undefined是相等的
如果一个操作值为NaN,则相等比较返回false
如果两个操作值都是对象,则比较它们是不是指向同一个对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值