NACの勉強の経過を綴るところ

個人的なコードの勉強

【JS】i++ と ++i

JS逆引きレシピ本、024(P45)。


i++と++iは、どちらも i に1を足す。

var i = 1;
i++;
concol.log(i); // 2

++i;
console.log(i); // 3

上記のように、ただそのタイミングで1加算しているだけなので、一見すると挙動に違いがない。
そのため、両者の違いを明確に理解しておらず、使用する場合はもっぱら i++ を一択で使用していた。


両者の違いは、本に書いてあった。

「i++」では変数jに代入してから加算する(後置演算)のに対して、「++i」では加算してから変数に代入する(前置演算)わけです。

ん?
微妙な違い。


でも、作例を見ると、理解できる。

let i =10;
let j = i++;
concol.log(i); // 11
concol.log(j); // 10

「let j = i++」は、「iに加算する前に、jに代入する」となる。
ので、i自身は加算されているものの、jは10のまま。

let i =10;
let j = ++i;
concol.log(i); // 11
concol.log(j); // 11

「let j = ++i」は、「iに加算した後に、jに代入する」となる。
ので、i自身は加算されていし、jも加算された値が入る。


このあたりをもやもやさせたまま今まで書けていたのは、たぶん、上記のような構文の場合は「let j = i + 1」と書いていたからだろうな。
曖昧な理解で進めていると、前者のコードをなにかのはずみで書いたときに、なぜ加算された値が代入されていないかで詰みそうだ。
気をつけよう。