[TIL]

라형선·2023년 4월 29일
0

블록 스코프

변수는 스코프를 가진다.
var는 함수 스코프를 가지고, let은 블록 스코프를 가진다.

for (var i = 0; i < 5 ; i++) {
	console.log(i)
}


// i = 5

반복문은 매우 빠르게 돌기 때문에 i는 6 이 되버린다.

for (var i = 0; i < winBalls.length; i++){
	setTimeout(() => {
    	console.log(winBalls[i], i);
        drawBall(winBalls[i], $resulte);
        }, (i+1) * 1000);
    }
}

let은 블록스코프라서 고정이되고
var은 함수스코프라서 고정이 되지 않는다.

for (var i = 0; i < winBalls.length; i++){
	(function(j) {
    	    setTimeout(() => {
    	console.log(winBalls[j], j);
        drawBall(winBalls[j], $resulte);
        }, (i+1) * 1000);
    }
    })(i);

}

클로저

함수와 함수 바깥에 있는 것(변수)들과의 관계

클로저문제 클로저가 문제가 아니라 클로저로 문제를 해결하는 것을 의미

함수 스코프를 가진 var와 비동기함수가 만나면 closer가 발생한다!

var보다는 let을 쓰는 것이 좋다.

CSS

태그.style.css 속성 = 값;을 하면 태그에 css 속성이 적용된다.

$tag.style.backgroundColor = 'red';
$tag.style.color = 'white';
profile
형선

0개의 댓글