문제

Firefox 3.5.3 (적어도)은 다음과 같은 코드를 작성할 수 있습니다.

var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;

어느 시점에서

foo => 4
bar => 5
baz => 6

코드 선명도에 매우 도움이 될 수 있습니다.

ECMAScript가 준수하는 것으로 간주됩니까? 사양에서 아무것도 보지 못했지만 JSLINT는 오류를 반환합니다.

도움이 되었습니까?

해결책

아니요, 그것은 JavaScript 1.7에 소개 된 기능입니다. 파괴 할당. JavaScript는 ECMAScript가 아닙니다. ECMAScript는 일부 JavaScript 기능의 표준화 시도입니다. JavaScript 엔진은 2 개뿐입니다. (Spider | Trace | Action) Monkey와 Rhino. 다른 모든 엔진은 ECMAScript 엔진입니다.

여기 몇 가지 예가 있어요.

var {a, b} = {b:2, a:1}; // a === 1, b === 2
var [c, d] = [3, 4]; // c === 3, d === 4
var {x: e} = {x: 5}; //  e === 5
function f({a, b: c}, [d, e]) {
  // same as: var [{a, b: c}, [d, e]] = arguments
}

오페라는 일부 파괴 할당을 부분적으로 구현합니다. 객체 나 기능 인수에 대해서는 지원하지 않지만 간단한 예제를 지원합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top