>  기사  >  웹 프론트엔드  >  ES6에서 배열 구조 분해로 인해 예기치 않은 값이 발생하는 이유는 무엇입니까?

ES6에서 배열 구조 분해로 인해 예기치 않은 값이 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 06:06:30960검색

Why Does Array Destructuring Result in Unexpected Values in ES6?

ES6 배열 분해의 단점

ES6에서 배열 분해는 배열에서 값을 추출하고 할당하기 위한 간결한 구문을 제공합니다. 그러나 특정 구성은 예상치 못한 결과를 초래할 수 있습니다.

제공된 코드 조각은 다음과 같은 질문을 제기합니다.

이 코드가 배열 구조 분해 후 예상치 못한 값을 초래하는 이유는 무엇입니까?

<code class="javascript">let a, b, c;
[a, b] = ['A', 'B'];
[b, c] = ['BB', 'C'];
console.log(`a=${a} b=${b} c=${c}`);</code>

예상: a=A, b=BB, c=C

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

답변:

문제는 세미콜론이 생략된 데 있습니다. 세미콜론은 일반적으로 이러한 줄을 별개의 문장으로 구분합니다. 세미콜론이 없으면 코드는 단일 명령문으로 구문 분석되고 다른 순서로 평가됩니다.

<code class="javascript">let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);</code>
  • [a, b] = …; 예상대로 구조 분해 할당입니다.
  • (… = ['BB', 'C'])는 배열을 왼쪽에 할당하고 배열로 평가하는 할당 표현식입니다.
  • 'A', 'B'는 배열 리터럴의 속성 참조입니다.
  • (b, c)는 쉼표 연산자를 사용하여 c(정의되지 않음)로 평가됩니다.

그러한 오해를 피하고 올바른 평가를 보장하려면 (, [, /, , - 또는 `.

로 시작하는 모든 줄의 시작 부분에 세미콜론을 명시적으로 포함하는 것이 중요합니다.

위 내용은 ES6에서 배열 구조 분해로 인해 예기치 않은 값이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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