扫码关注官方订阅号
<script> a='1'; b='5'; alert(a+b); </script>
运行后返回15而不是6 它直接把两个变量放一块了 没有进行相加 怎样解决?
认证高级PHP讲师
首先javascripts为弱类型语言。使用a='1';b='5'; 定义赋值变量a和b,这样a和b都被定义为了字符串,而运算符“+”除了可以用作数值的加法运算外还可以用来连接字符串,因此此处因为两个变量都为字符串所以“+”号的作用是字符串拼接而不是使数值作加法运算。
解决方法:直接这样赋值:a=1;b=5;即可直接进行加法运算
a='1';b='2';
把字符串变量a和b转化为数值①使用parerInt()方法:
a='1'; b='5'; alert(parseInt(a)+parseInt(b));
②使用强制类型转换
alert(Number(a)+Number(b));
③使用弱类型转换:
a='1'-0; //实际上使a='1'字符转换为数值 b='5'-0; //实际上使b='5'字符转换为数值 alert(a+b);
另外注意在定义变量时最好加上var,除非你想在函数内定义全局变量,不然不使用var关键字定义的变量都为全局变量。
+还有另一个用法,字符串拼接.
这些运算符在遇到变量时会进行类型转换。
对于+运算符而言,当其中一个变量是字符串时,会将另一个也转为字符串,进行字符串拼接。
只有当两个变量都是数字类型时,才是两数相加。
-(-a-b); (a-0)+(b-0);
var a ='5', b = '6'; console.log(parseInt(a) + parseInt(b));
正确的写法应为<script>a='1';b='5';alert(Number(a)+Number(b));</script>
js默认是字符串拼接
字符串加字符串是字符串拼接,而不会使用期待的类型转换。
会把两个都当成字符串拼接,如果你把第一个设置成1,结果就是6了
如果看过js的基本类型,你就知道这是两个字符串,+号的用法在数字中是相加,在字符串中是拼接的意思,也就是你看到的效果,成了一个‘15’的字符串。如果你要做数字相加,建议先转化成数字类型。楼上回答了,我就不补充了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先javascripts为弱类型语言。使用a='1';
b='5'; 定义赋值变量a和b,这样a和b都被定义为了字符串,而运算符“+”除了可以用作数值的加法运算外还可以用来连接字符串,因此此处因为两个变量都为字符串所以“+”号的作用是字符串拼接而不是使数值作加法运算。
解决方法:
直接这样赋值:
a=1;
b=5;
即可直接进行加法运算
a='1';
b='2';
把字符串变量a和b转化为数值
①使用parerInt()方法:
②使用强制类型转换
③使用弱类型转换:
另外注意在定义变量时最好加上var,除非你想在函数内定义全局变量,不然不使用var关键字定义的变量都为全局变量。
+还有另一个用法,字符串拼接.
这些运算符在遇到变量时会进行类型转换。
对于+运算符而言,当其中一个变量是字符串时,会将另一个也转为字符串,进行字符串拼接。
只有当两个变量都是数字类型时,才是两数相加。
正确的写法应为
<script>
a='1';
b='5';
alert(Number(a)+Number(b));
</script>
js默认是字符串拼接
字符串加字符串是字符串拼接,而不会使用期待的类型转换。
会把两个都当成字符串拼接,如果你把第一个设置成1,结果就是6了
如果看过js的基本类型,你就知道这是两个字符串,+号的用法在数字中是相加,在字符串中是拼接的意思,也就是你看到的效果,成了一个‘15’的字符串。如果你要做数字相加,建议先转化成数字类型。楼上回答了,我就不补充了。