var counter = 0;
var increment = function(){
return counter++;
// return counter=counter+1;
}
console.log(increment());
Почему counter ++; возвращает 0, но counter = counter +1; возвращает 1?counter ++ vs counter = counter + 1;
var counter = 0;
var increment = function(){
return counter++;
// return counter=counter+1;
}
console.log(increment());
Почему counter ++; возвращает 0, но counter = counter +1; возвращает 1?counter ++ vs counter = counter + 1;
Оператор инкремента после исправления возвращает текущее значение для оценки и увеличивает его затем, поэтому изменение значения заметен, когда он упоминается во второй раз.
Итак, когда выполняется оператор return
, значение не имеет , но был увеличен. Вы можете перекрестную проверку, выполнив следующие действия:
console.log(counter++); // 0
console.log(counter); // 1
return counter; // obviously 1
Попробуйте оператору предварительно исправить который приросты и затем возвращают инкрементируются значения для оценки.
return ++counter; // 1
Это называется prefix (++x
) vs postfix (x++
) и единственное различие действительно порядок операций:
counter;
вычисляет значение. (0)
counter++;
вычисляет значение (0), выполняет вычисление (0 -> 1) и изменяет переменную (counter
-> 1).
++counter;
выполняет вычисление (0 + 1), изменяет переменную (counter
-> 1) и вычисляется в (1) значение.
var counter = 0;
var increment = function(){
// now counter is 0 and after return it increment it's value to 1
// return 0 then 0+1=1;
return counter++;
// calculate like math, counter = 0+1 then counter = 1, now return 1;
// return counter=counter+1;
}
console.log(increment());
В первом сценарии
return counter++;
Это утверждение постфикса и оценивает как
return 0; and then 0+1=1
Во втором сценарии
return counter=counter+1;
Вычислить как математика,
return counter = 0+1 then,
return counter = 1,
return 1;