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