JavaScript中的= +_是什么意思?

260
我在想JavaScript中的=+_运算符是什么意思。它似乎执行赋值操作。
例子:
hexbin.radius = function(_) {
   if (!arguments.length)
       return r;
   r = +_;
   dx = r * 2 * Math.sin(Math.PI / 3);
   dy = r * 1.5;
   return hexbin;
};

58
让我想起了好旧的逼近运算符--> - Oleg
12
这里的 "+" 是一元运算符,它的操作数是下划线。 - Pieter Witvoet
45
看起来像是 Perl 程序员无法摆脱默认变量的影响 ;-) - Michael Wild
4
良好的语法高亮会帮助您回答这个问题。 - hugo der hungrige
19
你可以制作一个笑脸表情 x= +_+ 0; - tckmn
显示剩余10条评论
12个回答

3

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

示例:

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

例:

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

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

非常相似:


我认为你在第一行想要说的是 parseInt(_) 而不是 parseFloat(_),对吗? - Grijesh Chauhan
1
不,我的意思是“float”,因为parseInt会在非数字字符处停止,而parseFloat不会。例如:parseFloat(2.4) = 2.4,而parseInt(2.4) = 2 - Brian

2
在这个表达式中:
r = +_;
  • '+'在这里作为一元运算符,尝试转换右操作数的值。它不会转换操作数,而是转换计算后的值。因此,如果_最初就是"1",那么它将保持不变,但r将变成纯数字。

考虑这些情况是否希望应用+进行数字转换

+"-0" // 0, not -0
+"1" //1
+"-1" // -1
+"" // 0, in JS "" is converted to 0
+null // 0, in JS null is converted to 0
+undefined // NaN
+"yack!" // NaN
+"NaN" //NaN
+"3.14" // 3.14

var _ = "1"; +_;_ // "1"
var _ = "1"; +_;!!_ //true
var _ = "0"; +_;!!_ //true
var _ = null; +_;!!_ //false

虽然它是最快的数字转换器,但我几乎不建议过度使用,如果使用,则建议使用parseInt/parseFloat这样更易读的替代方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接