의미
확장 연산자(spread)는 세 개의 점(...)입니다. )。 이것은 쉼표 매개변수의 역함수와 같아서, 배열을 쉼표로 구분된 매개변수 시퀀스로 바꾸는 것입니다.
이 연산자는 주로 함수 호출에 사용됩니다.
위 코드에서 array.push(...) 항목) 그리고 추가(...) 숫자들), 두 경우 모두 함수 호출이며, 확장 연산자를 사용합니다. 이 연산자는 배열을 매개변수 시퀀스로 변환합니다. 확장 연산자는 매우 유연한 정상 함수 매개변수와 함께 사용할 수 있습니다.
대체 배열에 적용 방법
확장 연산자가 배열을 확장할 수 있기 때문에, 배열을 함수의 인자로 바꾸기 위해 apply 메서드를 사용할 필요가 없습니다.
다음은 적용 메서드를 대체하는 확장 연산자의 실용적인 예시로, 배열의 가장 큰 요소 작성Math.max 단순화하기 위해 적용한 방법입니다.
위 코드에 따르면, JavaScript는 배열의 가장 큰 요소를 찾는 함수를 제공하지 않기 때문에, 배열을 매개변수 시퀀스로 변환하는 함수만 적용할 수 있고Math.max, 그 다음 최대 값을 찾을 수 있습니다. 확장 연산자를 사용하면 Math.max 직접 사용할 수 있습니다. 또 다른 예로는 푸시 함수를 통해 다른 배열의 꼬리에 배열을 추가하는 방법이 있습니다.
위 코드의 ES5 작성 메서드에서는 push 메서드의 매개변수가 배열이 될 수 없으므로, apply 메서드를 통해 push 메서드를 유연하게 사용해야 합니다. 확장 연산자를 사용하면 배열을 푸시 메서드로 직접 전달할 수 있습니다. 또 다른 예를 들자.
연산자 적용 범위를 확장하기
(1) 배열 병합
확장 연산자는 숫자 조합을 새롭게 표현하는 방법을 제공합니다.
(2) 해체 할당과 결합
확장 연산자는 분해된 할당과 결합하여 배열을 생성할 수 있습니다.
배열 할당에 확장 연산자를 사용할 경우, 매개변수의 마지막 자리에만 배치할 수 있으며, 그렇지 않으면 오류가 보고됩니다.
(3) 함수의 반환값
자바스크립트 함수는 한 개의 값만 반환할 수 있으며, 여러 값을 반환해야 할 경우 배열이나 객체만 반환할 수 있습니다. 확장 연산자는 이 문제를 해결하기 위한 우회 방법을 제공합니다.
위 코드는 데이터베이스에서 데이터 한 줄을 가져와 연산자를 확장한 후 직접 생성자 날짜로 전달합니다.
(4) 끈
확장 연산자는 문자열을 실제 배열로 변환할 수도 있습니다.
위의 글씨는 32비트 유니코드 문자를 올바르게 인식할 수 있다는 중요한 장점이 있습니다.
위 코드를 작성하는 첫 번째 방법은, 자바스크립트가 32비트 유니코드 문자를 2문자로 인식하며, 확장 연산자에 문제가 없습니다. 따라서 문자열 길이를 올바르게 반환하는 함수는 다음과 같이 쓸 수 있습니다:
이 문제는 32비트 유니코드 문자를 조작하는 모든 함수에서 발생합니다. 따라서 확장 연산자로 모두 다시 작성하는 것이 가장 좋습니다.
위 코드에서 확장 연산자를 사용하지 않으면 문자열 역전 연산이 잘못됩니다.
(5) 이터레이터 인터페이스를 구현하는 객체들
Iterator 인터페이스 내 모든 객체는 확장 연산자를 통해 진정한 배열로 변환할 수 있습니다.
위 코드에서 querySelectorAll 메서드는 nodeList 객체를 반환합니다. 배열이 아니라 배열과 유사한 객체입니다. 이 경우 확장 연산자는 NodeList 객체가 Iterator 인터페이스를 구현하기 때문에 이를 실제 배열로 변환할 수 있습니다. 반복자 인터페이스가 배포되지 않은 배열형 객체들은 확장 연산자가 실제 배열로 변환할 수 없습니다.
위 코드에서 arrayLike는 배열과 유사한 객체이지만, Iterator 인터페이스를 배포하지 않으면 확장 운영자가 오류를 보고합니다. 이 경우 Array.from 메서드를 사용해 arrayLike를 실제 배열로 변환할 수 있습니다.
(6) 사상 및 집합 구조, 생성자 함수
확장 연산자는 내부적으로 데이터 구조의 Iterator 인터페이스를 호출하므로, Iterator 인터페이스를 가진 모든 객체는 Map 구조와 같은 확장 연산자를 사용할 수 있습니다.
생성기 함수가 실행되면 트래버서 객체를 반환하므로 확장 연산자도 사용할 수 있습니다.
위 코드에서 go는 생성기 함수이며, 실행 후 트래버서 객체를 반환하고, 이 트래버설 객체에 확장 연산자를 실행하면 내부 트래버스에서 얻은 값들을 배열로 변환합니다. 이터레이터 인터페이스가 없는 객체에 확장 연산자를 사용하면 오류가 보고됩니다.
|