이 코드가 있습니다. 올바른 출력으로 예상했던 'i' (주석에) 값을 작성했습니다 . 그러나 출력 / 경고는 다릅니다.
Fiddle : http://jsfiddle.net/e2jbno4a/
코드 :
var i = 10;
function outer() {
alert(i); // 10
var i = 5;
alert(i); // 5
function inner() {
var i = 20;
}
inner();
alert(i); // 5
if (1) {
var i = 30;
}
alert(i); // 5
setTimout(function () {
alert(i); // 5
}, 100);
}
outer();
누군가 나에게 출력 이유를 알려줄 수 있습니까? 아니면 특정 개념을 설명하는 포인터 만 있습니까?
따라서 단계적으로 :
var i = 10;
function outer() {
alert(i); // undefined
var i = 5;
alert(i); // 5 (i now references the `i` in this function's scope.)
function inner() {
var i = 20; // (The `20` is only available in the scope of `inner`)
}
inner();
alert(i); // 5 (So, this `i` still references the `var i = 5;` one)
if (1) {
var i = 30;
}
alert(i); // 30 (This one actually alerts `30`. There is no block scope in JS)
setTimeout(function () {
alert(i); // 5 (This will log `30`, you made a typo in the `setTimeout` call)
}, 100);
}
outer();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다