操作符与类型转换

一、+号

1.进行数据相加

2.+号放在数据前面就是取正数

3.与字符串运算时,是字符串拼接

4.可以将数字字符串或布尔类型等隐士转换成number类型

+‘123’=123、+‘string’=NaN、+true=1、+false=0、+[ ] = 0、 +[1,2,3]=NaN

+{}=NaN、+null=0、+undefined=0

二、!取反

经常被用作条件判断时的取反操作,类型判断等,还可以用'!'将变量转换为Boolean类型

1.!null=true、!undefined=true、!' '=true、!number=flase、!'abc'=flase、!2=false、

!{}=false、![ ] =false、!obj=false 

三、++ 

++放在前面,并进行赋值:先累加,后赋值

++放在后面,并进行赋值:先赋值,后累加

四、JavaScript隐式转换(javaScript中有两类数据类型:原始类型、对象类型)

1.有关==的隐式转换

undefined等于null、

字符串和数字比较时,字符串转数字

数字和布尔比较时,布尔转数字

字符串和布尔比较时,两者转数字

2.引用类型的转换(先要把引用类型转成基本类型,再按上述的方法比较)

PreferredType转换策略

如果PreferredType被标记为Number,则会进行下面的操作流程来转换输入的值。

1、如果输入的值已经是一个原始值,则直接返回它

2、否则,如果输入的值是一个对象,则调用该对象的valueOf()方法,

如果valueOf()方法的返回值是一个原始值,则返回这个原始值。

3、否则,调用这个对象的toString()方法,如果toString()方法返回的是一个原始值,则返回这个原始值。 

4、否则,抛出TypeError异常。

案例

①[ ] + [ ] = ' '

解释:先进行ToPrimitive,两个都是Array对象,不是Date对象,所以以Number为

转换标准,先调用value of(),结果还是[ ],不是原始值,所以继续调用toString()

结果还是' '(空字符串)原始值,将它们拼接结果为' '。

②[ ] + { } = [Object Object](字符串)

进行ToPrimitive,依然是以Number为转换标准。

[ ]的结果是“”。

{ }先调用valueOf(),结果是{ },不是原始值,所以继续调用toString(),结果是“[object Object]”,是原始值,将“[object Object]”返回。

加号两边结果都是String类型,所以进行字符串拼接,结果是“[object Object]”。

③+[ ] = 0

[ ]的原值是””, 将””转化成Number结果是0。

④{ } + { } = [object Object][object Object]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值