2010-02-19 7 views

답변

33

1..z 표현은 단순히 undefined를 반환합니다, 하지 범위입니다.

왜?

첫번째 점은 당신에게 Number 프리미티브를주는 Numeric Literal의 표시를 종료한다 :

var n = 1.; 

숫자 형 리터럴 문법은 다음과 같이 표현된다 :

DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 

에는 볼 수 있듯이 점 뒤의 DecimalDigits 부분은 (선택 사항) (opt 접미사)입니다.

1..z; // undefined 
1..toString(); // "1" 

가 가진 속성에 액세스하는 것과 같습니다

두 번째 점은 속성 접근이며, 그것이이 Number.prototype 객체에 존재하지 않기 때문에 undefined을있는 z 속성을 얻을 만 시도 할 것이다 괄호 표기법 속성 접근 자 :

1['z']; // or 
1['toString'](); 
+1

잘못된 정보를 제거해 주셔서 감사합니다. – spender

+0

굉장한 답변입니다. – Nicole

+0

감사합니다. 아주 좋은 설명. – Roman

5

이 결합 :

alert(1.foo); // --> parse error 
alert(1.4.foo); // --> undefined - number 1.4 doesn't have the property foo 
alert(1.); // --> 1 (?) 

를 결론 :

alert(1..foo); // --> undefined 
관련 문제