我想知道= +_操作符在JavaScript中是什么意思。它看起来像是在做作业。
例子:
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
我想知道= +_操作符在JavaScript中是什么意思。它看起来像是在做作业。
例子:
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
当前回答
_只是一个变量名,作为函数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
其他回答
= +_将_转换为一个数字。
So
var _ = "1",
r = +_;
console.log(typeof r)
将输出数字。
这是一个鬼鬼祟祟的问题。
需要理解的重要一点是,这里的下划线字符实际上是一个变量名,而不是一个操作符。
它前面的加号是得到下划线的正数值——即有效地将下划线变量转换为int型。您可以使用parseInt()实现相同的效果,但这里可能使用加号强制转换,因为它更简洁。
等号只是一个标准的变量赋值。
它可能不是故意写来混淆视听的,因为有经验的Javascript程序员通常会将下划线识别为变量。但如果你不知道,那肯定会很困惑。我当然不会这样写;在最好的情况下,我不喜欢使用没有意义的短变量名——如果你想在JS代码中使用短变量名来节省空间,请使用minifier;不要一开始就写短变量。
+_几乎等同于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
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