>  기사  >  웹 프론트엔드  >  JavaScript에서 `.forEach.call()`과 함께 빈 배열을 사용하는 이유는 무엇입니까?

JavaScript에서 `.forEach.call()`과 함께 빈 배열을 사용하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-25 00:42:30605검색

Why Use an Empty Array with `.forEach.call()` in JavaScript?

JavaScript에서 [].forEach.call()의 동작 이해

빈 배열이 forEach 메서드 앞에 오는 이 색다른 코드 조각은 개발자를 당황하게 했습니다. . 어떻게 작동하는지 자세히 살펴보겠습니다.

빈 배열 - 배열 프로토타입에 액세스하기 위한 요령

빈 배열은 독특한 용도로 사용됩니다. 즉, .forEach와 같은 배열 프로토타입에 대한 액세스를 제공합니다. 배열을 직접 사용하면 Array.prototype.forEach.call(...);을 명시적으로 작성할 필요 없이 이 기능을 사용할 수 있습니다.

forEach - 사용자 정의를 통한 반복

forEach는 다음과 같은 기능을 수행합니다. 다른 기능을 입력으로 사용합니다. 배열과 유사한 객체(예: 노드 목록)의 각 요소에 대해 세 가지 인수를 전달합니다:

  • 요소 자체
  • 요소의 인덱스
  • 배열형 객체에 대한 참조

.call - 이 컨텍스트 수정

.call 메소드를 사용하면 특정 this 컨텍스트로 함수를 호출할 수 있습니다. 이 경우 내부 함수의 this를 노드 목록으로 재정의하여 함수가 인덱스를 통해 요소에 액세스할 수 있도록 합니다.

다음을 고려하세요:

[1,2,3].forEach.call( document.querySelectorAll('a'), function(el) { /* logic */ });

이 코드는 빈 배열을 사용하여 .forEach 프로토타입에 액세스하고 노드 목록을 forEach에 전달하며 각 태그는 요소, 해당 인덱스 및 전체 노드 목록에 대한 액세스를 제공합니다.

함수형 프로그래밍 문제 폭로

일부 사람들은 이 기술을 사용하는 것이 수동 루핑에 비해 우아하지 않다고 주장하지만 실제로는 도움이 됩니다. 요소 또는 인덱스 정보에 액세스하는 동안 외부 세계(예: DOM)를 여러 번 수정해야 하는 경우에 사용됩니다.

ES6 및 그 이후 버전의 최신 솔루션

최신 JavaScript 버전 및 다음과 같은 도구 사용 Babel에서는 유사한 기능을 보다 깔끔하게 구현하기 위해 나머지 및 스프레드 연산자를 사용할 수 있습니다. 그러나 배열 프로토타입 액세스에 빈 배열을 사용하고 .call을 사용하여 이 컨텍스트를 수정하는 핵심 원칙은 여전히 ​​관련성이 있습니다.

위 내용은 JavaScript에서 `.forEach.call()`과 함께 빈 배열을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.