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

21

我正在尝试理解 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;

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


1
您可能会发现MDN文档中的描述很有帮助。其中它说:“一元取反运算符在其操作数之前,并对其进行取反。”和“一元加运算符在其操作数之前,并将其计算为其操作数,但如果其不是数字,则尝试将其转换为数字。” - Felix Kling
7个回答

28

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

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

abs 函数执行的是你认为 + 运算符所做的操作;它会使值变为正数,而不考虑原始符号。

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

+a 实际上与 a * 1 基本相同;它将 a 中的值转换为数字(如果需要),但在此之后它不会改变该值。

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

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

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

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

感谢反馈。我现在明白了-a的用法,但抱歉给@Guffa留下了一种愚蠢的印象,你能否提供一个超级基本的例子来说明+a在代码中的用法?我试图想象它在真实世界的例子中是如何使用的。 - fakeguybrushthreepwood
嗯@guffa,抱歉但我仍然看不到+a的真正实用示例 - 特别是因为您说parseIntparseFloat是将字符串转换为数字的更好方法。 - fakeguybrushthreepwood
@u1sonderzug:是的,+一元运算符实际上没有太多实用价值,但其他C风格的语言都有它,所以我猜他们不想将其从JavaScript中排除。我已经使用JavaScript大约20年了,但我无法回忆起我曾经使用过+一元运算符。 - Guffa

4

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

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

现在我很好奇为什么我们会看到以下行为:console.log(threeStr + 3),将数字添加到字符串有一个名称吗? - fakeguybrushthreepwood

2
我希望从基本数学角度解释这个问题:
乘法规则:
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 更好)


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

output
-1

0

变量'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

0

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

就是这样!!!!


-1

试试这个

false == 0 // returns true

所以,

a = false

a = +a //a * 1

console.log(a) // prints 0 as expected

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