WTFJS: "string" instanceof String
항상 흥미있는 주제를 가진 firejune 블로그에서 언급된 WFTJS 를 둘러보다가 첫번째로 보이는 “string” instanceof String; 의 결과가 false 인 것을 보고 생각해봤습니다. 참으로 WTF 이군요..ㅎ~
typeof 연산자는 하나의 오퍼랜드에 대해서 해당 데이타 타입을 문자열로 리턴합니다. 오퍼랜드가 숫자, 문자열, Boolean 값일 경우 각각 “Number, “String”, “boolean” 값을 리턴합니다. 또한, 객체와 배열에 대해서는 “object”를 리턴하지만 희안하게도 null 에 대해서도 “object” 를 리턴합니다. 함수에 대해서는 “function”, 그리고 정의되지 않은 대상에 대해서는 “undefined”를 리턴합니다.
| Operand | 숫자 | 문자열 | true/false | 객체 | 배열 | null | 함수 | 정의안됨 |
|---|---|---|---|---|---|---|---|---|
| typeof | ‘number’ | ‘string’ | ‘boolean’ | ‘object’ | ‘object’ | ‘object’ | ‘function’ | ‘undefined’ |
‘string’은 primitive type 즉 기본형이고 String은 클래스 즉 Function 입니다.
>> typeof 'string' 'string' >> typeof String 'function'
instanceof 연산자는 왼쪽에 객체를, 오른쪽에 객체의 클래스명을 취하여 결과를 참/거짓 중 하나로 리턴합니다.
>> var s = new String(); >> typeof s 'object' >> s instanceof String true
이에 비해 ‘string’ 이라는 문자열은 Javascript의 기본 타입 즉 Primitive Type 입니다. String 클래스를 통해 new 된 것이 아니라는 것입니다. 따라서 ‘string instanceof String’ 은 false 입니다.
>> 'string' instanceof String' false
트랙백 걸려고 했는데 안걸려서; 댓글 남깁니다
http://aprilbriz.com/111