笔试坑点

一元运算符“+”

请问,以下代码输出多少?

console.log(1+ +"2" + "2");//输出32

当时我还不明白为啥两个加号会分开,会不会是写错了啊,少写或者是多写了,但是笔试完了自己测试一下发现并没有错误,所以自己就谷歌了一波,发现:“2”前面的加号并非“加号”,而是一元运算符“+”!

1、“加号”为运算符号,将两个或多个值相加;
2、一元操作符“+”为操作符号,将单独的值(可操作类型)转化为可计算数值,如:“3”、true、false等。

通俗来说,A+B中的“+”即为加号,而我们使用的+A,-B之类的就是一元操作符。

所以,上题就是将“2”转化为了数值2,所以1+2为3,答案为32。

NaN与(string/number)相加 VS (string/number)与NaN相加

console.log("A" - "B" + "2");//NaN2
console.log("A" - "B" + 2);//NaN
console.log("2" + "A" - "B");//NaN
console.log(2 + "A" - "B");//NaN

在解题过程中,我们需要知道JavaScript与C、C++等不同,JavaScript不会在即算当中直接将字符转为它对应的ascii码。

1、”A” - “B”值为NaN,当后面是字符串时,NaN会直接作为字符串与“2”连接起来,所以值为NaN2;
2、NaN与值2相加,那么会将NaN作为数值,得到的仍然为NaN;
3、”2” + “A”得到“2A”,它与“B”计算,和”A” - “B”相同;
4、同3,先是将2转化为字符串匹配“A”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值