js-primer
js-primer copied to clipboard
`letではなくconstで反復処理をする` のタイトルと内容の組み合わせは意図的なものでしょうか
該当ページ
- https://jsprimer.net/basic/loop/#const-iteration
質問内容
タイトルが letではなくconstで反復処理をする
となっていますが, この節の中では const
を使うべき理由や, const
を使った具体例の紹介はされていないように読めました。この節の目的が一見して自分にはわかりづらかったため, タイトルと内容の組み合わせが意図的なものか, 意図的な場合その意図を教えていただけるでしょうか。
たしかにArray#reduceの話になっていてあんまりconst関係ない感じかもしれないですね。 意図しているのはletを使わない(再代入をしない)反復処理の方法なので、なにか別のタイトルか中身を分かりやすくした方が良さそうな気がしますね。
forを使うと次のように let total
という感じで let
で一時的な変数を定義しなくちゃいけなくなってしまいます。
再代入を禁止することで、ミスから発生するバグを減らすことが期待できます。 このため変数を宣言する場合には、まずconstで定義できないかを検討し、できない場合はletを使うことを推奨しています。 https://jsprimer.net/basic/variables/
と書いているように、できれば let
や var
を使わない(再代入できない状態)方が、再代入による意図しない値の上書きなどが発生しにくいので、その方法について書いているというコラムですね。
reduceメソッド自体があんまり直感的ではないので、本文ではなくコラムに置いているという形だったと思います。
(sum関数のようにスコープが小さければ、let
でそこまで問題がおきるわけじゃないので、推奨ってほどでもないという意味合いですね)
function sum(numbers) {
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
}
console.log(sum([1, 2, 3, 4, 5])); // => 15
解説いただきありがとうございます!
意図しているのはletを使わない(再代入をしない)反復処理の方法なので、なにか別のタイトルか中身を分かりやすくした方が良さそうな気がしますね。
こちら, (私の問題もあると思いますが) この節を読んだ後にタイトルと見比べ, 「つまり何を説明しているのだっけ, const
はどこに出てきたかな」となってしまったので, よろしければご検討よろしくお願いします。
JavaScript のクロージャーと for 文の let 初期化の例外 もう少し詳しい仕様的な解説