javascript - js中的=+表达式是什么意思
黄舟
黄舟 2017-04-10 17:57:21
[JavaScript讨论组]

如代码

function(dx, dy){
            rect.attr({x: orig_x+dx,y: orig_y+dy, fill:"orange"});
        },function(x,y){
            orig_x=+rect.attr("x");
            orig_y=+rect.attr("y");
            rect.attr({fill:"orange"});
        },function(){
            rect.attr({fill:"blue"});
        }
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(5)
高洛峰

其实这个并不是 =+, 只是+, 然后赋值。

+ 表示试图将后面的变量变成整数,比如

+'3' = 3
+'a' = NaN

一般作用就是用来把用户输入的字符串转换成整数

PHPz

这称之为正号(+)或是一元正号(unary plus),而不是加号(+),因为参与的运算子只会有一个,所以称为一元。

简单的来说,它是一种把其他类型的资料转为数字类型的语法,可以不限于字符串。建议只用在单纯的数字字符串上。

这种语法是从使用社群上发展出来的,教科书上很少会提及。这种语法有很多种,下面有张图里有6种是我从这篇问答找来的,它是用代码产生的,实际上并不只这6种:

你看图中就大概知道,一元正号(+)的行为类似于parseFloat,而不是parseInt,相似于parseInt的是双波折号(~~)的语法。

一元正号(+)可以把像"123.456"的字符串,转换为数字类型的123.456。会使用一元正号(+),而不用parseFloat其实是有原因的,大致上简单说明一下:

1. 快。

这种语法会被使用的主要原因,是经过测试过在某些浏览器与情况下它的效率超快。

2. 语法简单。

打个正号(+)比打parseFloat或parseInt够简单了。

3. 某些特殊转置情况下使用。

例如以下几个,有些开发者会用这些转置的结果,但建议你除非很确定要什么结果再使用。

空字符串/null/false: +''得出0数字,但用parseFloat或parseInt会得出NaN。
科学记号: +'2e3'得2000,与parseFloat一致,parseInt会得出2。
16进位: +'0xf'得15,parseFloat得0,parseInt会得出15。

其他的语法还有很多,例如1*'123.456'-(-'123.456')之类的,这种就很少见也很少人在用了。

PHP中文网
+= 是累加
= + 变量   // 将后面的String转化为数字
= - 变量   // 变为负数

为什么要这么写 也是很坑,为什么不用 parseInt parseFloat

PHPz

这是利用了js"隐性转换"的奇技淫巧啊,作用楼上都说了;而且用起来也方便

怪我咯

js中没有 =+ 运算符, 实际上是这样的:

orig_x = +rect.attr("x");

用来将字符串转换成数字,你可以理解为:

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

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