빈 배열이 forEach 메서드 앞에 오는 이 색다른 코드 조각은 개발자를 당황하게 했습니다. . 어떻게 작동하는지 자세히 살펴보겠습니다.
빈 배열은 독특한 용도로 사용됩니다. 즉, .forEach와 같은 배열 프로토타입에 대한 액세스를 제공합니다. 배열을 직접 사용하면 Array.prototype.forEach.call(...);을 명시적으로 작성할 필요 없이 이 기능을 사용할 수 있습니다.
forEach는 다음과 같은 기능을 수행합니다. 다른 기능을 입력으로 사용합니다. 배열과 유사한 객체(예: 노드 목록)의 각 요소에 대해 세 가지 인수를 전달합니다:
.call 메소드를 사용하면 특정 this 컨텍스트로 함수를 호출할 수 있습니다. 이 경우 내부 함수의 this를 노드 목록으로 재정의하여 함수가 인덱스를 통해 요소에 액세스할 수 있도록 합니다.
다음을 고려하세요:
[1,2,3].forEach.call( document.querySelectorAll('a'), function(el) { /* logic */ });
이 코드는 빈 배열을 사용하여 .forEach 프로토타입에 액세스하고 노드 목록을 forEach에 전달하며 각 태그는 요소, 해당 인덱스 및 전체 노드 목록에 대한 액세스를 제공합니다.
일부 사람들은 이 기술을 사용하는 것이 수동 루핑에 비해 우아하지 않다고 주장하지만 실제로는 도움이 됩니다. 요소 또는 인덱스 정보에 액세스하는 동안 외부 세계(예: DOM)를 여러 번 수정해야 하는 경우에 사용됩니다.
최신 JavaScript 버전 및 다음과 같은 도구 사용 Babel에서는 유사한 기능을 보다 깔끔하게 구현하기 위해 나머지 및 스프레드 연산자를 사용할 수 있습니다. 그러나 배열 프로토타입 액세스에 빈 배열을 사용하고 .call을 사용하여 이 컨텍스트를 수정하는 핵심 원칙은 여전히 관련성이 있습니다.
위 내용은 JavaScript에서 `.forEach.call()`과 함께 빈 배열을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!