어떻게 호이스트가이 동작을 설명합니까?Javascript hoisting odd behavior
for(var i = 0; i < 4; i++) {
setTimeout(function() {
alert("i is: " + i);
}, i * 200);
}
이것의 출력은 4, 4, 4, 4
이것은 문헌에서 자주 권상 위험한 예로서 사용된다. i 변수가 함수 범위에 바인드되어 모든 호출간에 공유되므로 실행 시간에 따라 for 루프를 마쳤으므로 후자의 출력이 4 일 수 있습니다. 그러나 초기 호출은 0 * 200 또는 0의 시간 초과를 지정합니다. 따라서이 함수가 즉시 4 미만일 때 즉시 실행해야한다고 생각합니다.이 함수의 모든 출력이 4가되는 이유는 무엇입니까?
호이 스팅과 아무 관련이 없기 때문이 아닙니다. 지연으로 '0'을 전달하더라도 브라우저에서 최소 지연은 약 10ms입니다. –
나는 온라인으로 읽은 예제를 오해의 소지가 있다고 생각했다. 나는. http://thecomputersarewinning.com/post/a-dangerous-example-of-javascript-hoisting/ –