js之运算中的隐式转换问题

js之运算中的隐式转换问题

在文章之初.我们不妨先想三个问题:
1.什么是隐式转换?
2.为什么且什么情况下才会发生隐式转换 ?
3.各种数据类型在隐式转换中会发生怎样的转换?
在接下来的文章中我们会一一解决这些问题:

1.什么是隐式转换

相信我们大家都知道Number.String.Boolern.undefined.Null这五种js中的基本数据类型,举个例子:

  var str = '12'
  var a = 5
  str = String(str) //12
  var b = a*str
  console.log(b)    //60

像出现这种情况时,我们一般会用Number()来将字符串先转换为number类型再参与运算,但大家有没有思考过当我们没有把str转化为number类型而直接参与运算,会产生什么结果,又会得到什么答案呢?

  var str = '12'
  var a = 5
  var b = a*str
  console.log(b)    //60

代码我已经验证过了,结果是依然可以得到正确答案,且答案类型为number >结论: 经过上述论证我们可以得出,在出现运算符的情况下不同数据类型类型的两变量间会发生隐式转化,所谓隐式转化就是他的转化过程是我们看不见的.

2.为什么且什么情况下才会发生隐式转换?

经过我们第一轮的验证,再结合js的执行机制我们也可以得出结论:

因为js代码是从上往下执行,因为两种数据类型通常不能进行运算,所以为了使代码能够顺利执行下去,会发生隐式转换

3.各种数据类型在隐式转换中会发生怎样的转换?

接下来我们就来看一下各种数据类型在隐式转换过程中会发生什么变化
一.Number

  1. String 类型转 Number 纯数字型字符串或0可转换为Number类型,其余转换为NaN;
  2. Bollean类型转 Number true–>1 false–>0
  3. undefined类型转Number NaN
  4. Null类型转NUmber 0

二.String

当字符串类型遇到连接运算符时,会发生变字符串的隐式转换,"+"存在在运算中时,只要存在字符串,不管在+前还是在+后,其他类型都会转化为字符串类型

三.Boolean

当遇到比较运算符或者个别关系运算符时,会转化为Boolean类型

四.undefined

undefined会把undefined转换为NaN,再进行加减操作

五.Null

会先转化为0在进行加减运算

六.对象和数组

数组和字符串属于引用数据类型,一般会进行两次隐式转化,第一次先转化为字符串类型,第二次再跟据情况进行隐式转换后参与运算

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值