【问题标题】:How does += (plus equal) work?+=(加等于)如何工作?
【发布时间】:2011-10-13 03:58:54
【问题描述】:

我对 += 符号有点困惑。它是如何工作的?

  1. 1 += 2 // 等于 ?

  2. 还有这个

    var data = [1,2,3,4,5];
    var sum = 0;
    data.forEach(function(value) {
        sum += value; 
    });
    sum = ?
    

【问题讨论】:

  • 1 += 2 1 等于 3 之后。问题不大。但是1 -= 1; 让布尔表达式让人头疼!
  • 显而易见——你可以在浏览器的 JavaScript 控制台中尝试:在 forEach 之后,sum 为 15。
  • 不知道您可以使用该值内联执行此操作。

标签: javascript


【解决方案1】:

1 += 2 是语法错误(左侧必须是变量)。

x += yx = x + y 的简写。

【讨论】:

  • 这在 javascript 中是错误的,根据 javascript: 198.51 -= 84.4 结果 114.10999999999999 这是不正确的。
  • @JpHouten 您的评论并不是真正针对此答案,但即使如此,我仍然觉得我应该回复它。首先,你的意思是 -,不是 -= 因为你 198.51 -= 84.4 只是给出了一个错误。但大多数情况下,这不是一个错误。这只是计算机用二进制而不是十进制表示数字的结果,而像 198.51 和 84.4 这样的数字不能用二进制精确表示,而是必须四舍五入。这是浮点数的标准部分。如果您需要精确(而不是近似)小数计算,则应使用定点数。
  • 实际上 x+=y 等于 x = x + (y)。看看这个stackoverflow.com/a/65325247/2913723
【解决方案2】:

1) 1 += 2 // 等于 ?

这在语法上是无效的。左边必须是一个变量。例如。

var mynum = 1;
mynum += 2;
// now mynum is 3.

mynum += 2; 只是mynum = mynum + 2; 的简写形式

2)

var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function(value) {
    sum += value; 
});

总和现在是 15。 展开我们拥有的 forEach:

var sum = 0;
sum += 1; // sum is 1
sum += 2; // sum is 3
sum += 3; // sum is 6
sum += 4; // sum is 10
sum += 5; // sum is 15

【讨论】:

    【解决方案3】:

    这只是以下的简写形式:

    sum = sum + value;
    

    【讨论】:

      【解决方案4】:

      += 在 JavaScript(以及许多其他语言)中将右侧添加到左侧的变量中,并将结果存储在该变量中。因此,您的 1 +=2 示例没有意义。这是一个例子:

      var x = 5;
      x += 4; // x now equals 9, same as writing x = x + 4;
      x -= 3; // x now equals 6, same as writing x = x - 3;
      x *= 2; // x now equals 12, same as writing x = x * 2;
      x /= 3; // x now equals 4, same as writing x = x / 3;
      

      在您的具体示例中,循环是对数组 data 中的数字求和。

      【讨论】:

        【解决方案5】:

        += 运算符用于连接字符串或添加数字。

        它会用它旁边的数量增加你的 sum 变量。

        var sum = 0;
        var valueAdded = 5; 
        
        sum += valueAdded;
        

        总和 = 5

        【讨论】:

        • 它连接字符串但添加数字。
        • 谢谢,保罗。连接可能不是最好的术语;)
        • 那会使+= = .= 与php有关吗?
        【解决方案6】:

        你必须知道:

        • 赋值运算符语法为:variable = expression;

          因此,1 += 2 -> 1 = 1 + 2 不是有效语法,因为左操作数不是变量。这种情况下的错误是ReferenceError: invalid assignment left-hand side

        • x += yx = x + y 的简写形式,其中x 是变量,x + y 是表达式。

          总和的结果是15

        总和 = 0; 总和 = 总和 + 1; // 1 总和 = 总和 + 2; // 3 总和 = 总和 + 3; // 6 总和 = 总和 + 4; // 10 总和 = 总和 + 5; // 15

        其他assignment operator 快捷方式的工作方式相同(相对于它们所指的标准操作)。 .

        【讨论】:

          【解决方案7】:

          ...不要忘记混合类型时会发生什么:

          x = 127;
          x += " hours "
          // x is now a string: "127 hours "
          x += 1 === 0;
          // x is still a string: "127 hours false"
          

          【讨论】:

            【解决方案8】:

            上面大家都说了

            var str = "foo"
            str += " bar"
            console.log(str) //will now give you "foo bar"

            也检查一下https://www.sitepoint.com/shorthand-javascript-techniques/

            【讨论】:

            • 你的意思是会给你“foo bar”吗?您应该在浏览器中尝试您的答案。
            • 修复了一个小修改。它之前说“不”而不是“现在”,这就是马克的回复。
            【解决方案9】:

            a += ba = a +b 的简写,意思是:

            1) 1 += 2 // 不会编译

            2) 15

            【讨论】:

              【解决方案10】:

              这只是大多数语言中的简写符号。这意味着

              x=x+1;

              我们可以对 x-=1,x*=1,x/=1 做同样的操作; 这意味着

              > x=x-1; x=x*1; x=x/1;

              【讨论】:

                【解决方案11】:

                x+=y 在许多语言中是set x to x + y 的简写。正如其名称所暗示的那样,总和将是data 中数字的总和。

                【讨论】:

                  【解决方案12】:

                  NO 1+=2!=2 这意味着 你要添加1+2。 但这会给你一个语法错误。 假设一个变量是 int 类型 int a=1; 然后 a+=2;表示a=1+2;并将 a 的值从 1 增加到 3。

                  【讨论】:

                    【解决方案13】:

                    x += 1 只是x = x + 1 的简写 它也可以用于字符串:

                    var string = "foo"
                    string += "bar"
                    

                    【讨论】:

                      【解决方案14】:
                      1. 1 += 2 不会抛出错误,但您仍然不应该这样做。在此语句中,您基本上是在说“设置 1 等于 1 + 2”,但 1 是一个常数,而不是 :number:string 类型的变量,因此它可能不会做任何事情。说
                        var myVariable = 1
                        myVariable += 2
                        console.log(myVariable)
                        
                        会将3 记录到控制台,因为x += y 只是x = x + y 的缩写
                      2. var data = [1,2,3,4,5]
                        var sum
                        data.forEach(function(value){
                          sum += value
                        })
                        
                        会使sum = 15 因为:
                        sum += 1 //sum = 1
                        sum += 2 //sum = 3
                        sum += 3 //sum = 6
                        sum += 4 //sum = 10
                        sum += 5 //sum = 15
                        

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2019-12-30
                        • 2013-03-08
                        • 1970-01-01
                        • 2020-12-19
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多