Что не так с этим увеличением в JavaScript? - PullRequest
0 голосов
/ 11 октября 2011
for (var i=0;i<5;++i){
alert(i);

}


for (var i=0;i<5;i++){
alert(i);

}

Эти две конструкции возвращают один и тот же результат: 0,1,2,3,4.Зачем?Каковы различия между ними?Имеет ли значение, какое приращение я использую в цикле for?

Ответы [ 5 ]

2 голосов
/ 11 октября 2011

Если вы ставите ++ перед переменной, вы увеличиваете значение перед его возвратом (в этом операторе), если вы ставите его позади, возвращаете значение, а затем увеличиваете его впоследствии.Поскольку вы ничего не делаете со значением в операторе, результат после указанного оператора будет таким же.

Учитывайте следующее:

var i = 0;
var a = ++i; // a is 1
var b = i++; // b is also 1, i is now 2.
1 голос
/ 11 октября 2011

Первый - это предварительное увеличение, а второе - постинкрементное.

Разница не в вашем примере, так как вы не присваиваете результат чему-либо, но при назначении результата вы показываете себя довольно много.в другую переменную.

var i = 0;
alert(i); // alerts "0"

var j = i++;
alert(j); // alerts "0" but i = 1

var k = ++i; 
alert(k); // alerts "2" and i = 2

Живой пример: http://jsfiddle.net/ggUGX/

0 голосов
/ 11 октября 2011

i++ или ++i в цикле for выполняется как другие операторы.Таким образом, помещение i++ или ++i в цикл for не имеет никакого значения.

0 голосов
/ 11 октября 2011

Эти два кодовых блока должны иметь одинаковый вывод. Разница между i ++ и ++ i заключается в порядке, в котором переменная i увеличивается, и имеет значение только при одновременном использовании значения i.

Например, ++ i и i ++ фактически делают одно и то же, если вы не используете их следующим образом:

y = i++;

или

y = ++i;

В первом примере i увеличивается на единицу ПОСЛЕ ТОГО, как y устанавливается его значение (поэтому, если i = 0, y = 0, то i = 1) Во втором примере i увеличивается до того, как y будет установлено в его значение (поэтому, если i = 0, i = 1, y = 1).

Поскольку вы не используете i ++ аналогичным образом для оператора for, это не имеет эффективной разницы.

0 голосов
/ 11 октября 2011

для цикла вы не видите никакой разницы, но ++ i увеличивает и затем возвращает значение, тогда как i ++ возвращает значение, а затем увеличивает. Если у вас есть код вроде

var a = myarray[++i]

и

var a = mayarray[i++];

они будут возвращать различные значения

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