Почему в инкременте передается значение переменной вместо значения и приращения? - PullRequest
0 голосов
/ 10 января 2019

Вот мой код:

var x = 3;
var y = x++;
y += 1;

Выход: y = 4

Я знаю, что компьютер прав, но я не уверен, почему компьютер прав. y получает значение 3 от x , затем увеличивает его до 4 в строке 2. Итак, вывод из строки 3 должно быть 5 , правильно?

Из того, что я прочитал, y присваивается значение x до того, как происходит увеличение, но когда это происходит, почему значение y не меняется?

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Существует разница между до увеличения (++x) и после увеличения (x++).

Оператор предварительного увеличения используется для увеличения значения переменной перед ее использованием в выражении. В предварительном приращении значение сначала увеличивается, а затем используется внутри выражения. Допустим, у нас есть:

a = ++x;

Здесь, если значение «x» равно 10, тогда значение «a» будет равно 11, поскольку значение «x» изменяется перед использованием его в выражении. Это эквивалентно:

x = x + 1;
a = x;

Оператор постинкремент используется для увеличения значения переменной после полного выполнения выражения, в котором используется постинкремент. В Постинкременте значение сначала используется в выражении, а затем увеличивается. Допустим, у нас есть:

a = x++;

Здесь предположим, что значение «x» равно 10, тогда значение переменной «a» будет равно 10, поскольку используется старое значение «x». Это эквивалентно:

a = x;
x = x + 1;

Вы можете прочитать больше об этом (например, здесь или здесь ).

ура!

// Post-increment example
console.log("post-increment examples");
let x = 10;
a = x++;
console.log(x, a);

x = 10;
a = x;
x = x + 1;
console.log(x, a);

// Pre-increment example
console.log("pre-increment examples");
x = 10;
a = ++x;
console.log(x, a);

x = 10;
x = x + 1;
a = x;
console.log(x, a);
0 голосов
/ 10 января 2019

x++ вернуть значение и затем добавить 1. См .:

var x = 3;
var y = x++;// x return 3 and then add 1, y is 3 
y += 1;//3 + 1 = 4
console.log(y)
console.log(x)//x return 4 
0 голосов
/ 10 января 2019

В вашем назначении y = x++; значение y сначала присваивается x , а затем переменная x увеличивается на 1. Выполняя эту операцию y становится 3, а x равно 4. Затем после запуска y + = 1 компьютер вычислит 3 + 1 = 4

.

Если вы ожидаете, что y будет 5, вы должны сделать y = ++x;. При этом x сначала будет увеличен на 1, а затем назначен на y , поэтому у нас будет y = 4 и x = 4 после y + = 1 (4 + 1 = 5 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...