js隐式类型转换规则_js隐式转换规则

这种由编译器自动转换的方式就称为隐式类型转换。

二、隐式类型转换的方式
  • 将值转为布尔值,Boolean()
  • 将值转为数字,Number()
  • 将值转为字符串,toString()
三、部分常见值的转化结果
1. 通过Boolean()转化
  • 会转化为false的值:undefined, null, -0, 0, NaN, “”
  • 会转化为true的值:其他所有
2. 通过Number()转化
  • 会转化为NaN的值:undefined,带字母或符号的字符串,所有引用类型(数组,对象,function,date等),NaN
  • 会转化为0的值:null,“”,+0,false
  • 布尔值转化为数值:false–>0 ,true–>1
四、隐式类型转换的各种情况
1. if中的条件会被自动转为Boolean类型
2. -减号*,\%isNaN()-负号,+正号

隐式调用Number()转化为数值类型

// 部分示例
  -"4" // -4
  +"7" // 7
  9-"4" // 5

3. 逻辑运算符(! , && , ||)
  • ! 隐式调用Boolean()转化为布尔值
  • &&

会将第一个操作数转化为Boolean类型

若转化后第一个操作数为true,则返回第二个操作值;否则返回第一个操作数的原始值

// 部分示例
 1 && "key"  //key
 "key" && "" // ""
 null && "key" // null
 undefined && 0 // undefined

  • ||

若第一个操作值经转化后为false则返回第二个值,否则返回第一个的原始值

1 || "key"  //1
"key" || "" // "key"
null || "key" // "key"
undefined || 0 // 0

4. + 加法运算符
  • 操作值中有字符串,将其他类型的操作值通过toString()转化为字符串再拼接
  • 其他情况都转化为数值类型

一些不常见情况

  • NaN + 任意值 = NaN
  • Infinity + Infinity = Infinity
  • -Infinity + (-Infinity) = -Infinity
  • Infinity + (-Infinity) = NaN
  • +0 + (+0) = +0
  • -0 + (-0) = -0
  • +0 + (-0) = +0
  • 3 + true = 4,将true转化为1
  • 4 + false = 4,将false转化为0
  • true + false = 1,将true转化为1,将false转化为0
5. 比较运算符(== , < , >)

类型转化规则:

当1层的对象类型与2层字符串进行比较,会将对象类型隐式转化为字符串类型,进行比较;

当2层的字符串类型或布尔类型与数值类型进行比较,会将2层的类型隐式转化为数值类型,进行比较;

当1层的对象类型与3层的数值类型进行比较,会先将对象类型转化为字符串类型再转化为数值类型;

当2层的类型相互比较,会均转化为数值类型再进行比较;

在这里插入图片描述

最后

小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析

虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值