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

解释+;javascript中的var和-var一元运算符,javascript,unary-operator,Javascript,Unary Operator,我试图理解javascript中的一元运算符,我发现这里的指南大部分是有意义的,但我不理解的是以下示例如何在实际代码示例中使用: +a; -a; 据我所知,+a意味着将变量设为a的正值和-a意味着将变量设为a的负值。我试过很多例子,比如: a = -10; a = +a; document.writeln(a); 且输出仍然为-10 我也试过: a = false; a = +a; document.writeln(a); 且输出为0 这些一元运算符的实际代码示例是什么?运算符+不会更改值

我试图理解javascript中的一元运算符,我发现这里的指南大部分是有意义的,但我不理解的是以下示例如何在实际代码示例中使用:

+a;
-a;
据我所知,+a意味着将变量设为a的正值和-a意味着将变量设为a的负值。我试过很多例子,比如:

a = -10;
a = +a;
document.writeln(a);
且输出仍然为-10

我也试过:

a = false;
a = +a;
document.writeln(a);
且输出为0


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

运算符
+
不会更改值的符号,
-
运算符会更改符号。两个运算符的结果都取决于原始值的符号,无论原始符号是什么,两个运算符都不会使值为正或负

a = 1
b = -a
console.log(b)

output
-1
var a = 4;
a = -a; // -4
a = +a; // -4
var a =-4;
a = Math.abs(a); // 4
abs
功能执行您认为
+
操作员执行的操作;无论原始符号是什么,它都会使值为正值

var a = 4;
a = -a; // -4
a = +a; // -4
var a =-4;
a = Math.abs(a); // 4
+a
实际上与做
a*1
是一样的;如果需要,它会将
a
中的值转换为数字,但之后不会更改该值

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

+
运算符有时用于将字符串转换为数字,但您可以使用
parseInt
parseFloat
函数以更具体的方式进行转换

var a = "5";
a = parseInt(a, 10); //5

例如,它们可以用来将字符串转换为数字

var threeStr = '3.0'
var three = +threeStr
console.log(threeStr + 3) // '3.03'
console.log(three + 3) //6
试试这个

false == 0 // returns 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

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

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)=正*正=正=0(可能使用true是一个更好的例子)

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


就这样

您可以在中找到有用的描述。在那里,它说“一元否定运算符位于其操作数之前并对其进行否定。”和“一元加号运算符位于其操作数之前并计算为其操作数,但尝试将其转换为数字(如果尚未转换为数字)。”感谢您的反馈。我知道可以看到-a的用法,但很抱歉听起来很愚蠢@Guffa,但是你能提供一个在代码中使用+a的超级基本示例吗?我试图想象一下它在现实世界的例子中是如何使用的。嗯@guffa,很抱歉,但我仍然看不出+a的一个真正实用的例子是什么-特别是因为你说
parseInt
parseFloat
是将字符串转换为数字的更好方法。@u1sonderzug:是的,
+
一元运算符实际上没有太多实际用途,但其他C风格语言也有,所以我想他们不想将其从脚本中排除。我已经使用Javscript大约20年了,我记不起我曾经使用过
+
一元运算符。现在我很好奇为什么我们会看到以下行为:
console.log(threeStr+3)
是否有一个名称可以将数字添加到字符串中?