Javascript +;=(加上同等)工作?

Javascript +;=(加上同等)工作?,javascript,Javascript,我对+=符号有点困惑。它是如何工作的 1+=2//等于 还有这个 var data = [1,2,3,4,5]; var sum = 0; data.forEach(function(value) { sum += value; }); sum = ? 这只是以下内容的一个简短形式: sum = sum + value; 1+=2是语法错误(左侧必须是变量) x+=y是x=x+y的缩写x+=y在许多语言中是将x设置为x+y的缩写。正如其名称所暗示的那样,总和将是数据a+=b是a=

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

  • 1+=2
    //等于

  • 还有这个

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

  • 这只是以下内容的一个简短形式:

    sum = sum + value;
    

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


    x+=y
    x=x+y
    的缩写
    x+=y
    在许多语言中是
    将x设置为x+y
    的缩写。正如其名称所暗示的那样,总和将是
    数据

    a+=b
    a=a+b
    的缩写,意思是:

    1)
    1+=2
    //无法编译


    2) 15运算符用于连接字符串或添加数字

    它将用它旁边的金额递增sum变量

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


    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;
    
    在您的特定示例中,循环将数组中的数字求和
    数据

    1)1+=2//equals

    这在语法上是无效的。左侧必须是一个变量。比如说

    var mynum = 1;
    mynum += 2;
    // now mynum is 3.
    
    mynum+=2
    只是
    mynum=mynum+2的缩写形式

    (二)

    总数现在是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
    

    否<代码>1+=2=2
    它的意思是 您将添加
    1+2
    。 但是这会给你一个语法错误。 假设变量是int类型int
    a=1
    ; 然后
    a+=2
    ;表示
    a=1+2
    ;将a的值从1增加到3。

    您必须知道:

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

      因此,
      1+=2
      ->
      1=1+2
      不是有效语法,因为左操作数不是变量。这种情况下的错误是
      ReferenceError:左侧的赋值无效

    • x+=y
      x=x+y
      的缩写,其中
      x
      是变量,
      x+y
      是表达式

      求和的结果为15

    总和=0; 总和=总和+1;//1. 总和=总和+2;//3. 总和=总和+3;//6. 总和=总和+4;//10 总和=总和+5;//15 其他快捷方式的工作方式相同(相对于它们所引用的标准操作)。
    .

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

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

    var str=“foo”
    str+=“bar”
    
    console.log(str)//现在将为您提供“foo bar”
    ,这在大多数语言中只是一种简写符号

    x=x+1

    我们可以对x-=1,x*=1,x/=1执行相同的操作; 也就是说

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

  • x+=1
    只是
    x=x+1
    它也可用于字符串:

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

    它连接字符串但添加数字。谢谢,Paul。连接可能不是最好的术语;)那么,这会使
    +=
    =
    与php相关吗?
    1+=2
    1等于3。不是那么大的问题。但
    1-=1使布尔表达式成为令人头疼的问题!很明显,您可以在浏览器的JavaScript控制台中尝试:在forEach之后,sum是15。不知道您可以使用该值内联执行此操作。根据JavaScript:198.51-=84.4,结果是114.10999999999,这是不正确的。@JpHouten您的评论并不是关于这个答案的,但即使如此,我还是觉得我应该对此作出回应。首先,你的意思是-,不是-,因为你198.51-=84.4只是给出了一个错误。但大多数情况下,这不是一个bug。这只是计算机用二进制而不是十进制来表示数字的结果,像198.51和84.4这样的数字不能用二进制来精确表示,但必须四舍五入。这是浮点数的标准部分。如果你需要精确的(而不是近似的)十进制计算,你应该使用定点数字。实际上x+=y等于x=x+(y)。看看这个你是说会给你“foo bar”吗?您应该在浏览器中尝试您的答案。通过小编辑修复。它以前说“不”,而不是“现在”,这正是马克的回答。
    
    sum += 1 //sum = 1
    sum += 2 //sum = 3
    sum += 3 //sum = 6
    sum += 4 //sum = 10
    sum += 5 //sum = 15
    
    var string = "foo"
    string += "bar"