"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ES6 배열 구조 분해: 예상대로 작동하지 않는 이유는 무엇입니까?

ES6 배열 구조 분해: 예상대로 작동하지 않는 이유는 무엇입니까?

2024-11-06에 게시됨
검색:459

ES6 Array Destructuring: Why Doesn\'t It Work As Expected?

ES6 배열 분해: 예상치 못한 동작

ES6에서 배열에 대한 분해 할당은 예상치 못한 결과를 초래하여 프로그래머를 당황하게 만들 수 있습니다. 이러한 인스턴스 중 하나는 다음 코드로 설명됩니다.

let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)

의도된 출력:
a=A b=BB c =C

실제 출력:
a=BB b=C c=정의되지 않음

설명:

반대 예상대로 이 코드는 원하는 출력을 생성하지 않습니다. 대신 b와 c의 값을 바꾸고 c는 정의되지 않은 상태로 둡니다. 왜 이런 일이 발생하는지 이해하려면 코드를 자세히 조사해야 합니다.

구문 분석 및 평가:

JavaScript에서 세미콜론은 문을 구분하는 선택 사항입니다. 명시적인 세미콜론이 없으면 코드는 단일 명령문으로 구문 분석됩니다:

let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);

문 분석:

  • [a, b] = (['A', 'B']는 원래 코드의 것과 유사한 구조 분해 할당입니다.
  • [(b, c)] = ['BB' , 'C']는 배열 ['BB', 'C']를 왼쪽 피연산자에 할당하는 할당 표현식입니다. 이 표현식은 동일한 배열로 평가됩니다.
  • ['A', 'B '][…]는 정의되지 않은 것으로 평가되는 배열 리터럴의 속성 참조입니다.
  • (b, c)는 정의되지 않은 마지막 피연산자(c)로 평가되는 쉼표 연산자를 사용합니다.

의미:

따라서 코드는 a와 c 모두에 정의되지 않은 값을 할당하고 b는 'C' 값을 올바르게 수신합니다. 명시적으로 세미콜론을 사용하거나 세미콜론을 자동으로 삽입해야 하는 연산자(예: (, [, /, , - 또는 `))로 모든 줄을 시작해야 합니다.

이를 이해하면 ES6의 구조 분해 할당이 작동함을 보장합니다. 예상대로 예상치 못한 값 교환과 정의되지 않은 할당을 방지합니다.

릴리스 선언문 이 글은 1729721303에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3