2016-06-15 2 views
0

이 유효하며, 자바 스크립트에서 숫자 1을 반환++ [[]] [0]이 오류를보고하는 대신 1을 반환하는 이유는 무엇입니까?

++[[]][0] 

이 왜 ++[] 같은 오류를보고하지 않는 이유는 무엇입니까?

++[]과 같지 않습니까?

참고 : Why does ++[[]][+[]]+[+[]] return the string “10”.

내 말하는 것은하지 ++[[]][0] 보고서에 오류가 왜 않는다는 것입니다 : 이것은보다 약간 다르다? [[]][0]이 변수입니까?

++[] // returns Invalid left-hand side expression in prefix operation. 
+2

http://stackoverflow.com/questions/7202157/why-does-return-the-string-10?rq=1 유사하다. 정확한 * 중복은 아니지만 충분히 가깝고 질문을 이해할 수있는 조각을 제공합니다. – j08691

+0

진짜 질문은, 왜 처음부터이 코드를 작성 했는가입니다. –

답변

3

The prefix increment operator (++) calls PutValuePutValue throws a ReferenceError when the argument is not a Reference : 그렇지 않다면, 왜 같은 오류를보고하지 않습니다.

그래서 a[]을 참조하지만, [] 리터럴 배열되지 기준이므로 ++[] 유효하지 않기 때문에

var a = []; 
++a; // returns 1 

유효 것과 동일한 방식이다.

마찬가지로 [[]][0][]에 대한 참조이므로 해당 참조가 다시 유효합니다.

이 또한

++1 // throws ReferenceError 
var a = 1; 
++a // returns 2 
관련 문제