-
-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
let と const について >> ループと反復処理 #567
Comments
@mimosafa フィードバックありがとうございます。 このケースだと let total = 0; // 初期値は0
for (let i = 0; i < 10; i++) {
total += i + 1; // 1...10
}
console.log(total); // => 55 次のケースだと const object = {
"a": 1,
"b": 2,
"c": 3
};
for (const key in object) {
const value = object[key];
console.log(`key:${key}, value:${value}`);
} 書いてるときに確か解説を一度入れようとして、きれいな解説が思いつかなくて結局入らなかった感じがしますね。 原理的にはforループにかかれている 例えば次のコードは const array = [1,2,3]
for (const item in array) {
console.log(item);
} このループを擬似的に展開すると次のようになります。 const array = [1,2,3]
// 1回めのループ
{
const item = 1;
console.log(item);
}
// 2回目のループ
{
const item = 2;
console.log(item);
}
// 3回目のループ
{
const item = 3;
console.log(item);
} ループ内で定義した const array = [1,2,3]
for (const item in array) {
console.log(item);
}
// ここでitemを参照しようとしても、ループ内はブロックスコープで囲まれているからアクセスできない。
console.log(item); // => ReferenceError: item is not defined forループごとに別々のブロック 一方で、最初の let total = 0; // 初期値は0
for (let i = 0; i < 10; i++) {
total += i + 1; // 1...10
}
console.log(total); // => 55
ここで解説がなかったのは、コードの見た目と動きが違ったり、スコープの概念を知ってないと理解できない挙動だったりするからですね… |
ありがとうございます!理解できました。 |
#852 で「関数とスコープ」への動線を追加しました |
for … in ならびに、for … of の例示コードの中で、key, value が const のもとで宣言されている(ように見える)のが、どうしても理解できませんでした。
コラムでその辺りの合点が得られるのかと期待したのですが、そうはいかず…
どうかその辺りのご解説をいただければ幸いです。
URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/loop/README.md
The text was updated successfully, but these errors were encountered: