2013-04-17 5 views
0

JavaScript에서 typeof 0'Number'이 아니라 instanceof 0 Number이됩니다.내장 JavaScript 유형 이름의 사례

내장 유형의 표준 이름이 대문자이고 소문자 인 typeof의 반환 값은 역사적인 이유로 변경할 수없는 단점/불일치라고 말하면되지만 될 수 있니? 또는 나는 무엇인가 놓치고 있냐?

+1

몰라 객체 의미하지만 consructors는 대문자로 시작하는 자바 스크립트의 규칙이며, 번호는 생성자 (또는 생성자 (constructor)라고 부름), 대문자 사용. 'typeof new Number()'는'object'를 반환합니다. :-) – RobG

답변

1

아니요,

실제로 숫자는 개체가있는 기본 제공 값 형식입니다.

typeof라고 말하면 0을 일시적으로 Object로 변환 할 필요가 없습니다.

instanceof를 사용하면 임시로 0이 개체로 변환됩니다.

는 문자열로 무엇을 유사합니다

"sometest" => 당신이 "sometest".toLowerCase() 처음 (임시)는 현악기와에 문자열을 변환합니다 할 것입니다 경우에, 그러나 문자열

입니다 그런 다음 해당 객체에 대해 메소드를 호출하십시오 (value-types에는 메소드가있을 수 없으므로). 그 할 수있는 기능이며, 엄격하게 요약하면

는 소문자 값 형은, 대문자 수단

+0

글쎄, 차이점은 객체 유형과 값 유형 사이에있다. 섹션 4.3.9 ~ 4.3.21을 살펴보면 null 타입과 null 값, boolean 타입 및 boolean 값이 있다는 것을 알 수 있습니다 ... 조금 혼란스러운 점은 사양에서 대문자와 소문자를 일관되게 사용하지 마십시오. – Kenneth

+0

그러나 "Number type"은 일관되게 사용되지만 ES5에서는 소문자 "number type"이 사용되지 않습니다. 또한 의사 코드에서 * Type (x) *을 일관되게 사용합니다. 나는 이전의 코멘트를 문맥에 맞지 않게 삭제했다. 인용문은 일반적으로 타입이 아닌 명세 타입을 가리킨다. – RobG