으아악 으아악
i가 전역 변수라고 생각하시나요? i는 지역 변수이므로 f1의 i와 f2의 i 사이에는 어떤 관계가 있나요?
1, 2가 아닌 0, 1인 이유는 i++가 실제로 i = i + 1;console.log(i++)이기 때문입니다. i가 먼저 인쇄된 다음 i = i + 1이 실행됩니다. console.log(++i)로 변경하면 1 또는 2가 됩니다.
이것은 i++와 ++i의 차이점입니다. i++는 먼저 인용된 후 증가하고, ++i는 먼저 증가된 다음 인용됩니다
으아악
f1을 처음 실행하면 0이 출력된다. i++이므로 i가 먼저 출력되고 다시 실행되면 이때는 2가 출력된다. f2를 실행하면 i가 0이므로 0이 출력된다. 즉, f1과 f2의 범위가 다르므로 i의 참조도 다릅니다.
f1()이 실행됩니다
그리고 i는 f1의 내부 변수입니다. ++ 이후에는 자연스럽게 0과 1이 출력됩니다
코드에 한줄만 추가해도 이해가능
새로 추가된 console.log는 var f1 = foo() 및 f1()이 실행되지 않을 경우에만 실행됩니다
i++은 연산을 먼저 하고 덧셈과 뺄셈을 하므로 0을 먼저 출력하고 1
i++
++은 연산 후 자체 추가 연산자이기 때문입니다. 이 지침을 완료한 후에는 i가 증가됩니다.
0의 이유는 console.log가 먼저 실행된 다음 i가 증가하기 때문입니다. 그러나 f1과 f2의 i는 관련이 없으며 클로저로 인해 f1이 다시 실행되어 1을 얻습니다. .
으아악 으아악
i가 전역 변수라고 생각하시나요?
i는 지역 변수이므로 f1의 i와 f2의 i 사이에는 어떤 관계가 있나요?
1, 2가 아닌 0, 1인 이유는
i++가 실제로 i = i + 1;
console.log(i++)이기 때문입니다. i가 먼저 인쇄된 다음 i = i + 1이 실행됩니다.
console.log(++i)로 변경하면 1 또는 2가 됩니다.
이것은 i++와 ++i의 차이점입니다. i++는 먼저 인용된 후 증가하고, ++i는 먼저 증가된 다음 인용됩니다
으아악
f1을 처음 실행하면 0이 출력된다. i++이므로 i가 먼저 출력되고 다시 실행되면 이때는 2가 출력된다. f2를 실행하면 i가 0이므로 0이 출력된다. 즉, f1과 f2의 범위가 다르므로 i의 참조도 다릅니다.
f1()이 실행됩니다
으아악그리고 i는 f1의 내부 변수입니다. ++ 이후에는 자연스럽게 0과 1이 출력됩니다
코드에 한줄만 추가해도 이해가능
으아악새로 추가된 console.log는 var f1 = foo() 및 f1()이 실행되지 않을 경우에만 실행됩니다
으로 변경합니다.i++
은 연산을 먼저 하고 덧셈과 뺄셈을 하므로 0을 먼저 출력하고 1++은 연산 후 자체 추가 연산자이기 때문입니다. 이 지침을 완료한 후에는 i가 증가됩니다.
0의 이유는 console.log가 먼저 실행된 다음 i가 증가하기 때문입니다. 그러나 f1과 f2의 i는 관련이 없으며 클로저로 인해 f1이 다시 실행되어 1을 얻습니다. .