【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」と書いていたからだろうな。
曖昧な理解で進めていると、前者のコードをなにかのはずみで書いたときに、なぜ加算された値が代入されていないかで詰みそうだ。
気をつけよう。