以下、本に出た例題のわからない箇所です。
let x = 2; console.log(x++ + x++) //5 //後置は1加える前の数字だから4になると思ったのに、5になった何故? console.log(++x + ++x) //11 //①前置は1加えた後の数字と出てるから6になると思ったのに、5になった何故? //②あと何故11になる?前の5が引き継がれてる? console.log(x++ + ++x) //14 //前置と後置の組み合わせだから5になると思ったが何故14に? console.log(++x + x++) //18 //5じゃないの? console.log(x) //10 //もはや何故10なのかわからない。上に代入された式が破壊的になってたとしてもどのような過程で10になったのかわからない。
どなたか優しい人、内部でどういう風になってるか1つ1つ分解して説明してほしいです。
初歩的な質問で申し訳ございません。
よろしくお願いいたします。
#追記(2021.8.18)
色々な方に回答いただき、自分なりに理解したことを以下の通りまとめます。
//前提:インクリメントがある度に1は加算される。なので例えばインクリメントが10個あったら10加算される //前置インクリメント:1を加算し、その後も1を評価する //後置インクリメント:1を加算するが、その後は1を評価しない let x = 2; console.log(x++ + x++) //5 //最初のx++に2+1が入り、後置インクリメントなので、+1が評価されず、計算後は2となる。結果の3が次のx++に入る //次のx++は前のx++の3が入り、3+1となる。後置インクリメントなので+1が評価されず、計算後は3となる。結果の4が次のx++に入る。 console.log(++x + ++x) //11 //x++に前の4が入り、4+1。前置インクリメントなので+1を評価し、5となる。 //次のx++に5が入り、5+1、前置インクリメントなので+1を評価し、6となる。 console.log(x++ + ++x) //14 //前の数字がなので6、6+1、後置インクリメントなので+1を評価しないので結果は6となる。 //前の数字が7なので7+1、前置インクリメントなので8となる。 console.log(++x + x++) //18 //上の3つの式と同じ感じ console.log(x) //10 //インクリメント(x++)が8回宣言されたので2+8
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/17 13:55
2021/08/18 00:00