什么是=+;?JavaScript中的平均值
我想知道=+\操作符在JavaScript中是什么意思。它看起来像是在做作业 例如:什么是=+;?JavaScript中的平均值,javascript,operators,Javascript,Operators,我想知道=+\操作符在JavaScript中是什么意思。它看起来像是在做作业 例如: hexbin.radius = function(_) { if (!arguments.length) return r; r = +_; dx = r * 2 * Math.sin(Math.PI / 3); dy = r * 1.5; return hexbin; }; +尝试将\u中的任何内容转换为数字 \uu只是一个变量名(不是运算符),它可以是a,fo
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
尝试将+
中的任何内容转换为数字\u
只是一个变量名(不是运算符),它可以是\uu
,a
等foo
+"1"
将“1”转换为纯数字1
var _ = "1";
var r = +_;
r
现在是1
,而不是“1”
此外,根据该报告:
一元加号运算符位于其操作数之前,并计算为其
操作数,但尝试将其转换为数字(如果不是)
已经。[…]它可以转换整数和
浮动,以及非字符串值true
、false
和null
。
十进制和十六进制(“0x”
-前缀)格式的整数都是
支持。支持负数(但不支持十六进制)。如果是
无法分析特定值,它将计算为NaN
还值得注意的是
一元加号是将某物转换成数字的最快和首选方式
它不是
=+
。在JavaScript中,+
表示将其更改为数字
+'32'
返回32
+'a'
返回NaN
因此,您可以使用
isNaN()
检查是否可以将其更改为数字。=+
实际上是两个运算符=
是赋值,+
和
是变量名
比如:
i = + 5;
or
j = + i;
or
i = + _;
下面的代码将帮助您演示如何使用=+
将字符串转换为int。例如:
y = +'5'
x = y +5
alert(x);
输出10
使用:因此这里的y
是int5
,因为=+
否则:
y = '5'
x = y +5
alert(x);
输出55
其中as\uu
是一个变量
_ = + '5'
x = _ + 5
alert(x)
输出10
此外,
如果知道您也可以通过~
实现同样的效果,那将很有趣(如果string是int string(float将是到int的四舍五入))
还输出10
~
按位非:反转其操作数的位。我做了两次,但幅度没有变化 它不是赋值运算符
只是传递给函数的一个参数
hexbin.radius = function(_) { // ^ It is passed here // ... };
- 在下一行
r=+\u前面的代码>
将该变量(+
)强制转换为一个数字或整数值,并将其分配给变量\u
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
我想你的意思是
r=+\ux代码>?在这种情况下,它将参数转换为一个数字
。假设是'12.3',然后+'12.3'
返回12.3
。因此,在引用的语句中,+\u
被分配给r
=+\u将u转换为一个数字
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代码中使用短的变量名来节省空间,可以使用小型化器;不要以短变量开始编写。\u
只是一个变量名,作为函数hexbin.radius的参数传递,+
将其转换为数字
让我做一个和你的函数一样的例子
var hexbin = {},r ;
hexbin.radius = function(_) {
if (!arguments.length)
return r;
console.log( _ , typeof _ )
r = +_;
console.log( r , typeof r , isNaN(r) );
}
然后运行这个示例函数。。哪个输出
六边半径(“1”)强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
hexbin.半径(1)强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
hexbin.半径([])强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
hexbin.半径('a')强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
hexbin.radius({})强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
六边半径(真)强>
1 string
1 number false
1 number
1 number false
[] object
0 number false
a string
NaN number true
Object {} object
NaN number true
true boolean
1 number false
在此表达式中:
r = +_;
- “+”在这里充当一元运算符,尝试转换右操作数的值。它不转换操作数,而是转换计算值。所以如果原来是这样的话,
\uu
将保持为“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
是可读性更好的选择。+\uCode>几乎相当于parseFloat(\uCode>)。请注意,parseInt
将在非数字字符(如点)处停止,而parshFloat
将不会停止
经验:
经验:
几乎没有区别:
- 空字符串
“
的计算结果为0
,而parseInt()的计算结果为NaN
- 有关更多信息,请查看此处:
简单地说,
+\ucode>等同于使用构造函数
事实上,它甚至在日期上起作用:
var d = new Date('03/27/2014');
console.log(Number(d)) // returns 1395903600000
console.log(+d) // returns 1395903600000
演示:
有关更多信息,请参见:
一元加号运算符位于其操作数之前