js中‘+’操作符与‘-’操作符的运算规则

本文详细解释了JavaScript中字符串与数字使用加号和减号运算的规则,包括字符串与数字相加时的拼接行为及字符串与数字相减时的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是笔试或面试经常会遇到的关于字符串与数字加减的问题:

var foo = "11"+2-"1";
console.log(foo);   //111
console.log(typeof foo);   //number
var foo = "11"+2+"1";   
console.log(foo);     //1121
console.log(typeof foo);    //string

好吧在不知道规则前我做错了。
下面是“+”与“-”在字符串与数字运算时的规则,了解之后就完全能理解为什么会是这样的答案了。
1、‘’+‘’
1)如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来(相当于字符串的concat()方法);
2)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来,结果为字符串;
3)如果有一操作数为对象,数字或者布尔值,则调用它们的toString()方法取得相应的字符串的值,然后再应用前面关于字符串的规则。
特殊):对于Undefined和null,则分别调用String()方法并取得字符串”undefined”和“null”。
2、‘’-‘’
1)如果两个操作数都是字符串,则其结果为NaN,因为字符串不能进行减运算;
2)如果有一个操作符是字符串,布尔值,null或者undefined,则先在后台调用Number()函数将其转换为数值,然后再执行数和数字之间的减法运算(此处与加法相反,即字符串与数字相减返回数字)如果转换的结果为NaN,那么得到的结果就是NaN;
特殊):Number()函数的转换规则中:如果是null值,则返回0;如果是undefined,则返回NaN。
之后再回顾一遍开始的两个例子,便一目了然。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值