= + _在JavaScript中是什么意思

2020/10/09 20:01 · javascript ·  · 0评论

我想知道= + _运算符在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 = +_;
  • +尝试将任何内容强制_转换为数字。
  • _只是一个变量名(不是运算符),可以是afoo等等。

例:

+"1"

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

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

r现在1,不是"1"

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

一元加号运算符位于其操作数之前,并求值为其操作数,但是尝试将其转换为数字(如果尚未转换为数字)[...]它可以转换整数和浮点数的字符串表示,以及非字符串值truefalsenull支持十进制和十六进制(带"0x"前缀)格式的整数支持负数(尽管不支持十六进制)。如果无法解析特定值,则将求值为NaN

还应注意的是

一元加号是将某物转换为数字的最快且首选的方式

它不是赋值运算符。

  • _ 只是传递给函数的参数。

    hexbin.radius = function(_) {
                    //       ^ It is passed here
        // ...
    };
    
  • 在下一行,r = +_; +infront将变量(_强制转换为数字或整数值并将其分配给变量r

请勿与+=运算符混淆

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

喜欢:

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

我的以下代码将帮助您展示如何使用of=+字符串 转换为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

此外,
很有趣的是,您也可以使用
~(如果string是int string (float将舍入为int)实现相同的功能

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

也输出10

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

不是=+在JavaScript中,+意味着将其更改为数字。

+'32' 返回32。

+'a' 返回NaN。

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

这是一个偷偷摸摸的。

要了解的重要一点是,这里的下划线字符实际上是变量名,而不是运算符。

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

这只是将等号作为标准变量赋值。

它可能不是故意写出来的,因为有经验的Javascript程序员通常会将下划线识别为变量。但是,如果您不知道那肯定很令人困惑。我当然不会那样写;最好的情况下,我不喜欢使用简短的无意义的变量名-如果您想在JS代码中使用简短的变量名来节省空间,请使用缩小符;不要以短变量开头。

= + _将_强制转换为数字。

所以

var _ = "1",
   r = +_;
console.log(typeof r)

将输出数字。

我想你的意思是r = +_;在这种情况下,它将参数转换为Number_是“ 12.3”,然后+'12.3'返回12.3因此,在引用的语句中将其+_分配给r

_只是一个变量名,作为function的参数传递hexbin.radius,并将+其转换为数字

让我像您的功能一样。

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.radius([]);

[] object
0 number false

hexbin.radius('a');

a string
NaN number true

hexbin.radius({});

Object {} object
NaN number true

hexbin.radius(true);

true boolean
1 number false

它将为左侧变量分配一个新值。

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

简而言之,+_ 等效于使用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-一元加号(+)部分中找到更多信息

一元加号运算符位于其操作数之前,并求值为其操作数,但是尝试将其转换为数字(如果尚未转换为数字)。尽管一元否定(-)也可以转换非数字,但一元加号是将某物转换为数字的最快且首选的方式,因为它不会对该数字执行任何其他运算。它可以转换整数和浮点数的字符串表示形式,以及非字符串值true,false和null。支持十进制和十六进制(“ 0x”前缀)格式的整数。支持负数(尽管不支持十六进制)。如果它无法解析特定值,则它将评估为NaN。

+_几乎是等同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

差异很小:

在此表达式中:

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是更好的可读性更好的选择。

本文地址:http://javascript.askforanswer.com/_zaijavascriptzhongshishenmeyisi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!