【问题标题】:Explain +var and -var unary operator in javascript解释 javascript 中的 +var 和 -var 一元运算符
【发布时间】:2012-08-25 09:31:22
【问题描述】:

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

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

【问题讨论】:

  • 您可能会发现MDN documentation 中的描述很有帮助。那里它说 “一元否定运算符在其操作数之前并取反。”“一元加运算符在其操作数之前并计算其操作数但尝试将其转换为数字,如果现在还没有。”

标签: javascript unary-operator


【解决方案1】:

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

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 函数以更具体的方式进行转换。

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

【讨论】:

  • 感谢您的反馈。我知道可以看到 -a 将如何使用,但很抱歉听起来很愚蠢@Guffa,但是你能提供一个在代码中使用 +a 的超级基本示例吗?我试图想象它在现实世界的例子中是如何使用的。
  • 嗯 @guffa,对不起,但我仍然看不出 +a 的真正实际示例是什么 - 特别是因为您说 parseIntparseFloat 是转换字符串的好方法到一个数字。
  • @u1sonderzug:是的,+ 一元运算符并没有太多实际用途,但其他 C 风格的语言也有,所以我猜他们不想将它排除在外Javascript。我使用 Javscript 大约 20 年了,我不记得我曾经使用过 + 一元运算符。
【解决方案2】:

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

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

【讨论】:

  • 现在我很好奇为什么我们会看到以下行为:console.log(threeStr + 3) 是否有用于将数字添加到字符串的名称?
【解决方案3】:

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

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 是一个更好的例子)

【讨论】:

    【解决方案4】:
    a = 1
    b = -a
    console.log(b)
    
    output
    -1
    

    【讨论】:

      【解决方案5】:
      变量'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
      

      【讨论】:

        【解决方案6】:

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

        就是这样!!!!!!

        【讨论】:

          【解决方案7】:

          试试这个

          false == 0 // returns true
          

          所以,

          a = false
          
          a = +a //a * 1
          
          console.log(a) // prints 0 as expected
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-18
            • 1970-01-01
            • 1970-01-01
            • 2016-11-08
            • 2013-04-06
            • 1970-01-01
            • 2021-03-15
            • 1970-01-01
            相关资源
            最近更新 更多