javascript - 이 js 질문을 이해할 수 없습니다
某草草
某草草 2017-05-19 10:44:12
0
9
657
으아악
某草草
某草草

모든 응답(9)
给我你的怀抱

으아악 으아악

过去多啦不再A梦

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는 먼저 증가된 다음 인용됩니다

PHPzhong

으아악

漂亮男人

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을 얻습니다. .

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿