解释javascript中的+var和-var一元运算符

IT技术 javascript unary-operator
2021-01-29 09:46:50

我正在尝试理解 javascript 中的一元运算符,我在这里找到了本指南http://wiki.answers.com/Q/What_are_unary_operators_in_javascript大部分都说得通,但我不明白以下示例将如何用于一个实际的代码示例:

+a;
-a;

据我了解+a; 旨在使变量成为 a 和-a的正值旨在使变量成为 a 的负值。我尝试了许多示例,例如:

a = -10;
a = +a;
document.writeln(a);

并且输出仍然是-10;

我也试过:

a = false;
a = +a;
document.writeln(a);

并且输出为0;

这些一元运算符的实际代码示例是什么?

6个回答

+运营商不改变值的符号和-符不改变的迹象。两个运算符的结果都取决于原始值的符号,无论原始符号如何,都不会使值成为正数或负数。

var a = 4;
a = -a; // -4
a = +a; // -4

abs函数执行您认为操作+符所做的操作;无论原始符号如何,它都会使值成为正数。

var a =-4;
a = Math.abs(a); // 4

+a实际上和做一样a * 1a如果需要,它会将值转换为数字,但之后它不会更改该值。

var a = "5";
a = +a; // 5

+操作有时用于字符串转换为数字,但你有parseIntparseFloat功能在一个更具体的方式做转换。

var a = "5";
a = parseInt(a, 10); //5
感谢您的反馈。我知道可以看到 -a 将如何使用,但很抱歉听起来愚蠢@Guffa,但是您能否提供一个在代码中使用 +a 的超级基本示例?我试图想象它将如何在现实世界的例子中使用。
2021-03-16 09:46:50
嗯@guffa,抱歉,但我仍然看不到 +a 的真正实际示例 - 特别是因为您这么说parseInt并且parseFloat是将字符串转换为数字的绝佳方法。
2021-03-17 09:46:50
@u1sonderzug:是的,+一元运算符并没有太多实际用途,但其他 C 风格的语言有它,所以我猜他们不想将它从 Javscript 中排除。我已经使用 Javscript 大约 20 年了,我不记得我曾经使用过+一元运算符。
2021-03-24 09:46:50

一个例子是它们可用于将字符串转换为数字,

var threeStr = '3.0'
var three = +threeStr
console.log(threeStr + 3) // '3.03'
console.log(three + 3) //6
现在我很好奇为什么我们会看到以下行为:console.log(threeStr + 3)是否有将数字添加到字符串的名称?
2021-03-23 09:46:50

我想从基本的数学角度解释这一点:
乘法规则:

Positive x Positive = Positive: 3 x 2 = 6  
Negative x Negative = Positive: (-2) x (-8) = 16   
Negative x Positive = Negative: (-3) x 4 = -12  
Positive x Negative = Negative: 3 x (-4) = -12  

考虑你的例子:

a = -10;
a = +a
document.writeln(a);

+a = +(-10) = 正 x 负 = 负 = -10

a = false;
a = +a;
document.writeln(a);

false == 0, +a = +(+0) = Positive * Positive = Positive = 0(也许使用 true 是一个更好的例子)

变量“a”中的“+”运算符仅表示:a

变量“a”中的“-”运算符仅表示:-a

Since, in above example 
a=-10;
a= +a; // means a, ie, +(-10) which is -10

but,
a= -a;  // means -a, ie, -(-10) which is +10

+a 表示 a*1,-a 表示 a*(-1)

而已!!!!!!