Home > Fundamental > WTFJS: "string" instanceof String

WTFJS: "string" instanceof String

February 15th, 2010 A.J Leave a comment Go to comments

항상 흥미있는 주제를 가진 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

VN:F [1.9.3_1094]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
Categories: Fundamental Tags:
  1. February 16th, 2010 at 06:04 | #1

    트랙백 걸려고 했는데 안걸려서; 댓글 남깁니다 :)

    http://aprilbriz.com/111

  1. No trackbacks yet.

Twitter 계정을 사용하여 댓글을 남길 수 있습니다. 로그인후 프로필을 수정하여 표시명을 변경할 수 있습니다