JavaScript入門 練習問題 45:演算子:値の加算処理
次のコードを実行したときのコンソールへの出力として正しいものはどれですか?
```javascript
let x = 5;
let y = x++;
console.log(x, y);
```
- 変数xも変数yも「5」という数値として出力される
- 変数xも変数yも「6」という数値として出力される
- 変数xは「6」となり、変数yは「5」として出力される
- 変数xは「5」となり、変数yは「6」として出力される
- 構文エラーになるため、コンソールには何も出力されない
Qraftユーザーの成績:難易度 Bランク(レーティング1236)・正答率 47%(8/17回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:変数xは「6」となり、変数yは「5」として出力される
変数xに後置のインクリメント演算子(++)が使われているため、加算される前の値がyに代入され、その後にxが加算されるので、変数xは「6」となり変数yは「5」として出力されます。
【正解の理由】
`x++`のようにインクリメント演算子を変数の後ろに置く(後置インクリメント)と、「現在の値を返してから、変数自身に1を足す」という動作になります。そのため、yには5が代入され、その直後にx自身は6になります。
【不正解の理由】
• 「変数xも変数yも『5』という数値として出力される」という説明は誤り。xには1が足されるため6になる
• 「変数xも変数yも『6』という数値として出力される」という説明は誤り。もし`++x`(前置インクリメント)であれば両方6になるが、今回は後置のためyは5のままになる
• 「変数xは『5』となり、変数yは『6』として出力される」という説明は誤り。加算されるのはx自身である
• 「構文エラーになるため、コンソールには何も出力されない」という説明は誤り。正常なJavaScriptの構文である