괄호가 아주 많군요! 하지만 이 코드를 살펴보면, 매개변수 하나를 받는 함수를 만들어서 루프
의 각 단계에서 호출한 것과 완전히 똑같음을 알 수 있습니다. 즉시 호출하는 함수 표현식을 나
타내는 다음 예제를 보십시오.
var
i
;
for
(
i
=
5
;
i
>=
0
;
i
--) {
(
function
(
i
) {
var
i
;
setTimeout
(
function
() {
for
(
i
=
5
;
i
>=
0
;
i
--) {
console
.
log
(
i
===
0
? "
go
!" :
i
);
(
loopBody
(
i
))(
i
); }, (
5
-
i
)*
1000
; })(
i
);
} }
이름 붙은 함수를 호출하는 부분을 익명 함수로 교체했습니다.
블록 스코프 변수를 사용하면 스코프 하나 때문에 함수를 새로 만드는 번거로운 일을 하지 않
아도 됩니다. 블록 스코프 변수를 사용하면 이 예제를 극도로 단순화할 수 있습니다.
for
(
let
i
=
5
;
i
>=
0
;
i
--) {
setTimeout
(
function
() {
console
.
log
(
i
===
0
? "
go
!" :
i
);
}, (
5
-
i
)*
1000
);
}
이번에는
for
루프
안에
let
키워드를 썼습니다.
let
키워드를
for
루프 바깥에 썼다면 똑같은
문제가 발생했을 겁니다.
let
키워드를 이런 식으로 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.
O’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
I wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
I’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
I'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.