일반적인 for 문 에서도 i 는 독립적인 block scope를 가지는게 아닐까요?
186
작성한 질문수 4
우선 감사말씀 드립니다. 정말 좋은 강의를 제공해주셔서 잘 듣고 있습니다. 감사합니다.
충돌하는 개념이 있어서 문의드립니다.
지난번 let 강의 질문에서 하기와 같은 답변을 주셨습니다.
// 답변 내용
for문에서 i 값이 변경되는 매 루프마다 각각 새로운 블록스코프가 형성됩니다.
즉 아래와 같은 내용이 반복되는 형태로 생각하면 됩니다.
for (let i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i)
})
}
// ==================
{
let i = 0;
funcs.push(function(){ console.log(i); });
}
{
let i = 1;
funcs.push(function(){ console.log(i); });
}
{
let i = 2;
funcs.push(function(){ console.log(i); });
}
...
// 질문내용
지난번 답변에 기반하면 아래와 같은 질문이 생기네요
각 i 도 결국 독립적인 block scope 를 가지게 되면서 오류가 안나야 하지 않을까 하는 생각이 듭니다.(물론 오류가 나도록 하는게 더 적절하다고 생각합니다. 그리고 JS 엔진 내부적으로 예외를 발생시키는 것으로 대충 짐작이 됩니다.)
이에 관해 좀 더 생각해 볼 주제나 키워드가 있을까요? 아니면 조금의 설명을 보태주시면 감사하겠습니다.
// 이 코드는 에러가 발생한다.
for (const i = 0; i < 5; i++) {
console.log(i)
}
// 아직 의문점이 남는다. 아래 for 문에서도 각 i 는 독립적인 block scope를 가지게 되는 것이 아닌가?
{
const i = 0;
console.log(i);
}
{
const i = 0;
console.log(i);
}
답변 1
1
으아... 제가 지난번에 답변을 이상하게 달아놓았었네요;;
강의 당시엔 맞게 설명을 했었는디 왜그랬을까요 ㅠㅠ
질문에 대한 답변을 틀리게 말씀드렸습니다. 죄송합니다.
일반적인 for문에서는 각 i값에 대해 독립적인 블록스코프가 생기는 것은 맞습니다.
다만 각각의 블록스코프 내부에서 i를 선언하는 것이 아니라, 외부 변수인 i를 끌어다 쓰는 것으로 이해해야 맞습니다.
즉 아래와 같은 형태가 됩니다.
let i = 0;
{
funcs.push(function(){ console.log(i); });
i = 1;
}
{
funcs.push(function(){ console.log(i); });
i = 2;
}
{
funcs.push(function(){ console.log(i); });
i = 3;
}
프로토타입 체이닝에 대해서
0
378
1
react 사용할 때 destructuring assignment라고 하는거 진짜 많이 사용 했는데 신기합니다.
0
521
1
2023-10-30일 기준 Object Rest/Spread Properties 적용 됬나봐요. 짱신기
0
337
1
제가 이해한 부분이 혹시 맞는지 알 수 있을까요?
0
311
2
블록스코프 내에서 펑션을 선언해서 사용하는경우가 있나요?(실무)
0
348
1
클래스에서 화살표함수?
0
1221
2
default parameter TDZ
0
279
1
강의 자료
1
306
2
전개 연산자 얕은 복사 질문
0
277
1
궁금한게 있는데요 ..
0
307
2
궁금한게 잇는데요 여기서 this는 array값을 출력해주나요?
0
359
1
template literal 강의에서의 reduce 메소드
0
312
2
다운로드 받은파일
0
286
1
const 이럴때도 사용하나요?
0
386
1
순서정렬
0
235
1
함수선언문 말고 arrow function
0
262
1
this바인딩 질문
1
266
1
에로우함수 new.target
0
208
2
함수표현식질문
0
224
1
rest parameter장점
0
312
1
if(exps[i])
0
194
1
좋은강의 감사합니다 이거는 호이스팅이 실행안되는거 같은데
0
307
3
해체하여 적용하려는 대상은 해체하는 대상의 타입에 매칭해야하나요?
0
175
1
강의노트 없습니다.
0
234
1





