如代码
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"});
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
其实这个并不是
=+, 只是+, 然后赋值。+表示试图将后面的变量变成整数,比如一般作用就是用来把用户输入的字符串转换成整数
这称之为正号(+)或是一元正号(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')之类的,这种就很少见也很少人在用了。为什么要这么写 也是很坑,为什么不用
parseInt parseFloat这是利用了js"隐性转换"的奇技淫巧啊,作用楼上都说了;而且用起来也方便
js中没有 =+ 运算符, 实际上是这样的:
用来将字符串转换成数字,你可以理解为: