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

例子:

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

当前回答

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

如:

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 = +_;

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

例子:

+"1"

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

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

R现在是1,不是1。

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

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

还注意到

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

它不是赋值操作符。

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

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

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

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

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

这是一个鬼鬼祟祟的问题。

需要理解的重要一点是,这里的下划线字符实际上是一个变量名,而不是一个操作符。

它前面的加号是得到下划线的正数值——即有效地将下划线变量转换为int型。您可以使用parseInt()实现相同的效果,但这里可能使用加号强制转换,因为它更简洁。

等号只是一个标准的变量赋值。

它可能不是故意写来混淆视听的,因为有经验的Javascript程序员通常会将下划线识别为变量。但如果你不知道,那肯定会很困惑。我当然不会这样写;在最好的情况下,我不喜欢使用没有意义的短变量名——如果你想在JS代码中使用短变量名来节省空间,请使用minifier;不要一开始就写短变量。