我想知道= +_操作符在JavaScript中是什么意思。它看起来像是在做作业。

例子:

hexbin.radius = function(_) {
   if (!arguments.length)
       return r;
   r = +_;
   dx = r * 2 * Math.sin(Math.PI / 3);
   dy = r * 1.5;
   return hexbin;
};

当前回答

它将给左边变量一个数字赋新值。

var a=10;
var b="asg";
var c=+a;//return 10
var d=-a;//return -10
var f="10";

var e=+b;
var g=-f;

console.log(e);//NAN
console.log(g);//-10

其他回答

_只是一个变量名,作为函数hexbin的参数传递。半径,并将其转换为数字

让我举一个和你的函数一样的例子。

var hexbin = {},r  ;

hexbin.radius = function(_) {
   if (!arguments.length)
      return r;
   console.log( _ , typeof _ )    
   r = +_;
   console.log( r , typeof r , isNaN(r) );   
}

并运行这个示例函数..的输出

hexbin.radius( "1");

1 string
1 number false 

hexbin.radius( 1 );

1 number
1 number false

hexbin。半径([]);

[] object
0 number false

hexbin。半径('a');

a string
NaN number true

hexbin。半径({});

Object {} object
NaN number true

hexbin。半径(真);

true boolean
1 number false

它不是赋值操作符。

_只是传递给函数的参数。 hexbin。半径=函数_ { // ^它被传递到这里 / /…… }; 下一行r = +_;+ infront将该变量(_)转换为一个数字或整数值,并将其赋给变量r

不要把它与+=运算符混淆

=+实际上是两个运算符=是赋值,+和_是变量名。

如:

i = + 5;
or 
j = + i;
or 
i = + _;

下面的代码将帮助您展示如何使用=+将字符串转换为int。 例子:

y = +'5'
x = y +5
alert(x);

输出10

这里y是int 5,因为=+ 否则:

y = '5'
x = y +5
alert(x);

输出55

其中as是一个变量。

_ = + '5'
x = _ + 5
alert(x)

输出10

此外, 有趣的是,你也可以用~(如果字符串是int字符串(float将是整轮到int))实现同样的事情。

y = ~~'5'  // notice used two time ~
x = y  + 5
alert(x);

也输出10

~是按位的NOT:将其操作数的位反转。我做了两次,幅度没有变化。

我想你的意思是r = +_;?在这种情况下,它将参数转换为数字。假设_是'12.3',那么+'12.3'返回12.3。所以在引用语句中+_被赋值给r。

简单地说,+_相当于使用Number()构造函数。

事实上,它甚至适用于约会:

var d = new Date('03/27/2014');
console.log(Number(d)) // returns 1395903600000
console.log(+d) // returns 1395903600000

演示: http://jsfiddle.net/dirtyd77/GCLjd/


更多信息也可以在MDN - Unary plus(+)部分找到:

The unary plus operator precedes its operand and evaluates to its operand but attempts to converts it into a number, if it isn't already. Although unary negation (-) also can convert non-numbers, unary plus is the fastest and preferred way of converting something into a number, because it does not perform any other operations on the number. It can convert string representations of integers and floats, as well as the non-string values true, false, and null. Integers in both decimal and hexadecimal ("0x"-prefixed) formats are supported. Negative numbers are supported (though not for hex). If it cannot parse a particular value, it will evaluate to NaN.