前提・実現したいこと
JavaScriptのインクリメント演算子の前置演算と後置演算の違いについて学習していました。
そこで後置演算の例として以下のようなコードが挙げられていました。
JavaScript
1var a = 1; 2var b = a++; 3 4console.log(a); //2 5console.log(b); //1
ここでふと、**「aとbの定義を逆に書いたらどうなるんだろう?」**と思い、やってみました。下が結果です。
JavaScript
1var b = a++; 2var a = 1; 3 4console.log(a); //1 5console.log(b); //NaN
aについては2行目で1を代入(再代入?)しているので1だと思います。
問題はbで、定義されていないaを代入するとこの時点でbはundifinedになると思うのですが、なぜNaNとなっているのでしょうか?
試したこと
試しに、++を除いたコードをかいてみたところ
JavaScript
1var b = a 2var a = 1 3 4console.log(a); //1 5console.log(b); //undifined
以上のように結果が変わりました。2行目についてMDNによると
まだ値が代入されていない変数は undefined 型となります。
となっていました。1行目の時点ではaの値が決まっていない(まだ何も代入されていない)から、undefinedになるということでしょうか。そうであるならば、bがundifinedでaが1なのはわります。それならばなぜ、件の++がある場合はNaNになるのかがわかりません。
可能な限り調べたつもりなのですが、初歩的過ぎたらすみません…。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/29 23:01