2010-07-07 3 views
13

네, 제 방화 용 콘솔에서 작동합니다. 왜 이런 식으로 구문 오류가 없습니까?Javascript : [] = 5, 구문 오류 없음? 왜?

[] = 5; [] = doThis(); [] = (function() {})(); 

왜 허용되는지 궁금합니다.

+0

(면책 조항이 모든 그냥 ... FF에서 물건을 실행하여 의미를 추측한다). –

답변

14

는 한 번에 여러 변수를 설정할 수 있도록 할당 일치를 사용하여 FF에서 자바 스크립트처럼 허용 같은데 이 같은 수행합니다

[x,y] = [5,6,7]; 

이는 아무것도 할당 할 것이다 :

[] = [5,6,7]; 
을 그런 다음 "아무것도 정의되지 않은 값을 할당되지됩니다 [] = whatever를 사용하는 경우 너무

[x] = 5; // makes x undefined 

: 0

그 위에, 그것은 FF처럼 보인다는 모든 배열이 일치하지 않는 경우로 갈 경우에도 기꺼이 "그래서 RHS를 평가하는 것만으로 끝납니다.

: BTW ... 내가 그냥 설정을 무시하고 함께 이동하기 생각 그것은 크롬에서 오류가

+0

와우, 그건 더 이상합니다. – Iggyhopper

+0

아주 좋은 일라이! +1 –

+4

mozilla의 구조 지정 할당 구문에 대한 자세한 내용은 여기에 있습니다. http://stackoverflow.com/questions/204444/destructuring-assignment-in-javascript –

2

Chrome에서 '잡히지 않은 참조 오류 : 할당에 잘못된 왼쪽'이 표시됩니다. IE8에서 "오류 : '[개체]'에 할당 할 수 없습니다. FF는 오류를 발생시키지 않습니다.

이것은 Firefox JavaScript 엔진의 실패 일 가능성이 높으며 어쨌든 배열 리터럴 []의 기능에 영향을 미치지 않는 것 같습니다. 그래서

[x,y] = [5,6]; // sets x to 5 and y to 6 

"물론"일부 JS 구현은 매우 관대하며, 자동으로 여분의 값을 무시합니다 :

+0

아하, 파이어 폭스와 필자는 다른 브라우저에서 이것을 실제로 테스트하지 않았기 때문에 실패했다. – Iggyhopper

관련 문제