Как работает += (плюс равно)?
Я немного запутался со знаком +=. Как это работает?
1 += 2
// равно?и это
var data = [1,2,3,4,5]; var sum = 0; data.forEach(function(value) { sum += value; }); sum = ?
12 ответов
1 += 2
является синтаксической ошибкой (левая сторона должна быть переменной).
x += y
это сокращение для x = x + y
,
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
+=
в 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
,
+=
Оператор используется для объединения строк или добавления чисел.
Это увеличит вашу переменную суммы на сумму рядом с ней.
var sum = 0;
var valueAdded = 5;
sum += valueAdded;
сумма = 5
Вы должны знать, что:
Синтаксис операторов присваивания:
variable = expression;
По этой причине
1 += 2
->1 = 1 + 2
не является допустимым синтаксисом, так как левый операнд не является переменной. Ошибка в этом случаеReferenceError: invalid assignment left-hand side
,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) //will now give you "foo bar"
Проверьте это также https://www.sitepoint.com/shorthand-javascript-techniques/
Это просто сокращенная запись в большинстве языков. Это означает, что
х = х +1;
мы можем сделать ту же операцию для x- = 1, x * = 1, x / = 1; что значит
> х = х-1; х = х *1; х = х /1;
a += b
это сокращение для a = a +b
что значит:
1) 1 += 2
// не скомпилируется
2) 15
x+=y
это сокращение во многих языках для set x to x + y
, Сумма будет, как подсказывает ее название, сумма чисел в data
,
НЕТ 1+=2!=2
это означает, что вы собираетесь добавить 1+2
, Но это даст вам синтаксическую ошибку. Предположим, что переменная имеет тип int a=1
; затемa+=2
; средства a=1+2
; и увеличить значение от 1 до 3.
x += 1
это просто сокращение для x = x + 1
Его также можно использовать для строк:
var string = "foo"
string += "bar"
1 += 2
не выдаст ошибку, но вы все равно не должны этого делать. В этом заявлении вы в основном говорите "установите 1 равным 1 + 2", но 1 - это постоянное число, а не переменная типа:number
или:string
так что это, вероятно, ничего не сделает. Говоря
будет регистрироватьvar myVariable = 1 myVariable += 2 console.log(myVariable)
3
к консоли, какx += y
просто сокращение отx = x + y
сделал бы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