javascript forEach는 각 배열 항목에 대해 새로운 실행 컨텍스트를 생성합니까, 아니면 현재 실행 컨텍스트의 어휘 환경만 업데이트합니까?
P粉663883862
P粉663883862 2024-04-02 00:13:25
0
1
300

아래 코드에서는 배열의 각 항목에 대해 새로운 실행 컨텍스트가 생성됩니까, 아니면 실행 컨텍스트는 동일하게 유지되고 어휘 환경의 환경 레코드만 업데이트됩니까?

코드에서 오류가 발생하지 않으므로 실행 컨텍스트와 독립적으로 새 범위(어휘 환경)가 생성된다고 가정하지만 맞는지 잘 모르겠습니다.

으으으으

P粉663883862
P粉663883862

모든 응답(1)
P粉674876385

표준 라이브러리 함수에 제공되는 콜백에는 특별한 것이 없습니다. 그것들은 여전히 ​​함수이고 일반적인 함수 호출 방식으로 호출됩니다.

네. 함수를 호출할 때마다(이 경우 forEach에서 콜백을 호출할 때) 새로운 실행 컨텍스트가 생성됩니다.

(이 경우)는 새로운 실행 컨텍스트를 생성하는 것과 별개가 아닙니다. 함수 호출을 위한 표준 절차의 일부로.

반대로 for-of 루프를 생각해 보세요:

으아아아

여기서 호출할 콜백 함수는 없습니다. 루프 본문은 단지 블록입니다. 그러나 블록 범위 의미론이 정의되는 방식으로 인해 각 루프 반복마다 새로운 어휘 환경 개체가 생성됩니다. 이는 forEach 回调类似,每次循环迭代都有一个新的 foo,即使不需要函数调用。 (如果您要在该块内创建事件处理程序或类似的事件处理程序,这非常方便。)(如果我们使用 var 代替,则不会每次都有一个新的,var 会跳出该块到周围函数作用域或全局作用域,因为 var 不是块作用域。这是我建议永远不要在新代码中使用 var 콜백과 유사하게 함수 호출이 필요하지 않은 경우에도 루프 반복마다 새로운 foo가 있음을 의미합니다. (이것은 블록 내부에 이벤트 핸들러나 유사한 이벤트 핸들러를 생성하려는 경우 매우 편리합니다.) (대신 var를 사용하면 매번 새로운 이벤트 핸들러가 생성되지 않습니다. var 는 블록에서 주변 함수 범위나 전역 범위로 이동합니다. var는 블록 범위가 아니기 때문입니다. 이는 새 코드에서 var 를 사용하지 않는 것이 좋습니다. > 이유 중 하나)

.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!