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

例子:

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

当前回答

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

其他回答

r = +_;

+尝试将_转换为一个数字。 _只是一个变量名(不是一个操作符),它可以是a, foo等。

例子:

+"1"

将“1”转换为纯数字1。

var _ = "1";
var r = +_;

R现在是1,不是1。

此外,根据MDN的算术运算符页面:

一元加号运算符在其操作数之前,求值为its 操作数,但如果不是,则尝试将其转换为数字 了。[…它可以转换整数和的字符串表示 浮动,以及非字符串值true, false和null。 十进制和十六进制(“0x”前缀)格式的整数都是 支持。支持负数(但不支持十六进制)。如果它 不能解析一个特定的值,它将计算为NaN。

还注意到

一元加号是将数字转换为数字的最快和首选的方法

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

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

+_几乎等同于parseFloat(_)。注意,parseInt将停止在非数字字符,如点,而parshFloat不会。

经验值:

    parseFloat(2.4) = 2.4 
vs 
    parseInt(2.4) = 2 
vs 
    +"2.4" = 2.4

经验值:

var _ = "3";
    _ = +_;

console.log(_); // will show an integer 3

差别很小:

空字符串""的值为0,而parseInt()的值为NaN 更多信息请看这里:parseInt vs unary + -何时使用which

不是=+。在JavaScript中,+表示将其更改为数字。

+'32'返回32。

+“a”南。

因此,您可以使用isNaN()来检查它是否可以更改为number。

_只是一个变量名,作为函数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