2009-10-31 6 views
1

파이어 폭스 3.5.3 (이상) 나 같은 코드를 작성할 수 :JavaScript는 ECMAScript와 호환되는 배열입니까?

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

하는 시점에서 코드 선명도에 매우 도움이 될 수

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

.

ECMAScript와 호환되는 것으로 간주됩니까? 사양에서 아무것도 보지 못했지만 JSLint는 오류를 반환합니다.

+0

이게 논리적인지 궁금합니다 ... LHS 배정에 관한 부분에 대해서는 논리적이지 않은 것처럼 보입니다. – mauris

답변

3

아니요,이 기능은 JavaScript 1.7에 도입 된 기능으로 destructuring assignment입니다. JavaScript는 ECMAScript가 아닙니다. ECMAScript는 일부 JavaScript 기능의 표준화 시도입니다. JavaScript 엔진은 두 가지만 있습니다 : (Spider | Trace | Action) 원숭이와 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 
} 

오페라는 부분적으로 일부 destructuring 할당을 구현합니다. 그것은 객체 나 함수 인자에 대해서는 지원하지 않지만 간단한 예제를 지원합니다.

+0

아. 나는 그것이 더 새로운 특징이 될 것이라고 생각했다. 그리고 1.7은 아직 완전히 지원되지 않기 때문에 더 자세한 옵션을 고수해야합니다. 감사! –

+0

늦게 댓글을 달았지만 주제를 검색하고있었습니다. 소멸 할당은 이제 폐기 된 ECMAScript 4th Edition을 위해 계획된 기능이었습니다. ECMAScript 5에 넣지 않은 것은 슬픈 일입니다. –

+0

ecmascript : harmony http://wiki.ecmascript.org/doku.php?id=harmony:destructuring 테이블에있는 것처럼 보입니다. –