JavaScript typeof 연산자

자바스크립트에는 값을 포함할 수 있는 5가지 데이터 타입이 있습니다.

  • string
  • number
  • boolean
  • object
  • function

객체에는 6가지 타입이 있습니다.

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean

값을 포함할 수 없는 두 가지 데이터 타입이 있습니다.

  • null
  • undefined

typeof 연산자

typeof 연산자를 사용하여 변수의 데이터 타입을 찾을 수 있습니다.

예제 1
typeof "John"                 // Returns "string"
typeof 3.14                   // Returns "number"
typeof NaN                    // Returns "number"
typeof false                  // Returns "boolean"
typeof [1,2,3,4]              // Returns "object"
typeof {name:'John', age:34}  // Returns "object"
typeof new Date()             // Returns "object"
typeof function () {}         // Returns "function"
typeof myCar                  // Returns "undefined" *
typeof null                   // Returns "object"

다음 사항을 준수하십시오.

  • NaN의 데이터 타입은 숫자입니다.
  • 배열의 데이터 타입은 객체입니다.
  • 날짜의 데이터 타입은 객체입니다.
  • null의 데이터 타입은 객체입니다.
  • 정의되지 않은 변수의 데이터 타입은 undefined 입니다.
  • 값이 할당되지 않은 변수의 데이터 타입은 undefined 입니다.

typeof를 사용하여 JavaScript 객체가 배열(또는 날짜)인지 확인할 수 없습니다.

원시 데이터

원시 데이터 값은 추가 속성 및 메서드가 없는 단일 단순 데이터 값입니다.

typeof 연산자는 다음 기본 형식 중 하나를 반환할 수 있습니다.

  • string
  • number
  • boolean
  • undefined
예제 2
typeof "John"              // Returns "string"
typeof 3.14                // Returns "number"
typeof true                // Returns "boolean"
typeof false               // Returns "boolean"
typeof x                   // Returns "undefined" (x가 값이 없을 때)

복합 데이터

typeof 연산자는 다음 두 가지 복합 타입 중 하나를 반환할 수 있습니다.

  • function
  • object

typeof 연산자는 객체, 배열, null에 대해 “object”를 반환합니다.

typeof 연산자는 함수에 대해 “object”를 반환하지 않습니다.

예제 3
typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]             // Returns "object" 
typeof null                  // Returns "object"
typeof function myFunc(){}   // Returns "function"

typeof 연산자는 배열에 대해 “object”를 반환합니다. 자바스크립트 배열은 객체이기 때문입니다.

typeof의 데이터 타입

typeof 연산자는 변수가 아닙니다. 연산자입니다. 연산자( + - * / )에는 데이터 형식이 없습니다.

그러나 typeof 연산자는 항상 문자열을 반환합니다. (피연산자 유형 포함)

constructor 속성

constructor 속성은 모든 JavaScript 변수에 대한 생성자 함수를 반환합니다.

예제 4
"John".constructor                // Returns function String() 
(3.14).constructor                // Returns function Number()  
false.constructor                 // Returns function Boolean()
[1,2,3,4].constructor             // Returns function Array()  
{name:'John',age:34}.constructor  // Returns function Object() 
new Date().constructor            // Returns function Date()   
function () {}.constructor        // Returns function Function()

constructor 속성을 확인하여 객체가 배열인지 확인할 수 있습니다(“Array” 단어 포함).

예제 5
function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Array") > -1;
}

또는 객체가 배열 함수인지 여부를 확인할 수 있습니다.

예제 6
function isArray(myArray) {
  return myArray.constructor === Array;
}

constructor 속성을 확인하여 객체가 Date인지 확인할 수 있습니다(“Date” 단어 포함).

예제 7
function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Date") > -1;
}

또는 객체가 Date 함수인지 여부를 확인할 수 있습니다.

예제 8
function isDate(myDate) {
  return myDate.constructor === Date;
}

Undefined

자바스크립트에서 값이 없는 변수는 undefined입니다. 유형도 undefined입니다.

예제 9
let car;    // 값 : undefined, 데이터 타입 : undefined

값을 undefined로 설정하여 모든 변수를 비울 수 있습니다. 유형도 undefined입니다.

예제 10
car = undefined;    // 값 : undefined, 데이터 타입 : undefined

빈 값

빈 값은 undefined와 관련이 없습니다.

빈 문자열에는 실제 값과 유형이 모두 있습니다.

예제 11
let car = "";    // 값 : "", 데이터 타입 : "string"

Null

자바스크립트에서 null은 “nothing”입니다. 존재하지 않는 어떤 것입니다.

JavaScript에서 null의 데이터 타입은 객체입니다.

객체를 null로 설정하여 비울 수 있습니다.

예제 12
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;    // 값 : null, 데이터 타입 : "object"

객체를 undefined으로 설정하여 비울 수도 있습니다.

예제 13
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;   // 값 : undefined, 데이터 타입 : undefined

undefined와 null의 차이

undefinednull은 값은 같지만 유형이 다릅니다.

예제 14
typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true