작동 방법 num
변수는 코드의 함수와 독립적입니다. 두 함수 모두 동일한 변수를 참조하므로 둘 다 동일한 데이터를 변경하고 변경 사항을 관찰합니다.
따라서 num++
작업은 proCall
이 호출되기 전에 num
을 증가시킵니다. proCall
이 마지막으로 호출되면 증가 된 상태이므로 num
의 증가 된 상태를 봅니다.
다음은 작업 순서에 대한 단계별 설명입니다 (호이 스팅 무시). 일련 번호를 따르십시오.
// 1. create the variable
var num = 01;
// 2. create the processAndIncrement function
function processAndIncrement() {
// 4. Assign a function that logs `num` to the `process` variable
var process = function() {
// 8. log the current value of `num` (which was incremented at step 5)
console.log(num);
}
// 5. increment `num`
num++;
// 6. return the `process` function
return process;
}
// 3. Invoke processAndIncrement, and assign its return value to `proCall`
var proCall = processAndIncrement();
// 7. invoke `proCall` (which is the same as the `process` function)
proCall();
당신이 proCall
가 호출 될 때 발생하는 증분을 원하는 경우, num++
는 process
기능 내부로 이동해야합니다.
예, 함수 핸들을 반환합니다. 호출 될 때,'num'의 현재 값을 출력합니다. 무엇에 대해 특별히 이해하지 못합니까? 왜 '1'을 기록 할 것이라고 기대 했습니까? – Bergi
'processAndIncrement'에 대한 호출은'num' (전역 변수)를 증가시키고'num' (이제'2')를 기록하는 다른 함수를 리턴합니다. –