javascript - 两变量这样写为什么却不相加
PHP中文网
PHP中文网 2017-04-11 11:00:37
[JavaScript讨论组]
<script>
a='1';
b='5';
alert(a+b);
</script>

运行后返回15而不是6 它直接把两个变量放一块了 没有进行相加 怎样解决?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(11)
巴扎黑

首先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关键字定义的变量都为全局变量。

PHP中文网

+还有另一个用法,字符串拼接.

黄舟

这些运算符在遇到变量时会进行类型转换。

对于+运算符而言,当其中一个变量是字符串时,会将另一个也转为字符串,进行字符串拼接。

只有当两个变量都是数字类型时,才是两数相加。

阿神
-(-a-b);

(a-0)+(b-0);
伊谢尔伦
var a ='5', b = '6';
console.log(parseInt(a) + parseInt(b));
PHP中文网

正确的写法应为
<script>
a='1';
b='5';
alert(Number(a)+Number(b));
</script>

巴扎黑

js默认是字符串拼接

伊谢尔伦

字符串加字符串是字符串拼接,而不会使用期待的类型转换。

天蓬老师

会把两个都当成字符串拼接,如果你把第一个设置成1,结果就是6了

巴扎黑

如果看过js的基本类型,你就知道这是两个字符串,+号的用法在数字中是相加,在字符串中是拼接的意思,也就是你看到的效果,成了一个‘15’的字符串。如果你要做数字相加,建议先转化成数字类型。楼上回答了,我就不补充了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号