javascript中string与number相加得到字符串,相减却是数字

原理

javascript是一门弱类型语言。

弱类型语言 是相对强类型语言来说的,在强类型语言中,变量类型有多种,例如int char float boolean 等,不同的类型相互转换有时需要强制转换。
javascript只有一种类型var ,为变量赋值时会自动判断类型并进行转换,所以javascript是弱语言。
在别的编程语言中,会对变量的类型有严格的限制,之间的转换也有规定。开始定义一个变量,是整型它就只能是整型,是字符串它就必须是字符串。
而JS就不同了,变量声明的时候不用规定是什么类型的,用的时候它自己根据你赋的值判断。

javascript虽然是一门弱类型语言,但还是有自己的数据类型,其中,

基本数据类型有:number、string、boolean、undefined、null
引用类型有:object、function

举个例子:

var a = "100";
var b = 11;
var c = 9;
console.log(a+b);
console.log(typeof(a+b));
console.log(a+b-c);
console.log(typeof(a+b-c));

输出结果为:
10011
string
10002
number

这是因为在javascript做运算时,会进行隐式转换。a为string类型,b为numer进行相加运算,首先会先将b转换为string类型,进行字符串的拼接运算。a+b运算之后得到的是一个string类型的10011,这时再跟c去做减法,显然字符串减number是行不通的。这时就会把string类型转换为number再去做减法运算。

如有问题请联系我~

欢迎加入QQ群:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值