07.3. typeof, 지수, 그 외의 연산자

typeof, Exponent, other

typeof 연산자

typeof연산자는 피연산자의 데이터 타입을 무자열로 반환한다. typeof 연산자는 7가지 문자열 string, boolean, undefined, symbol, object, function 중 하나를 반환한다. null을 반환하는 경우가 없으며, null의 경우 object 타입을 반환다. 함수의 경우 function을 반환한다.

Key Point💡

typeof 연산자가 반환하는 문자열은 7개의 데이터 타입과 정확히 일치하지 않는다.

typeof '' // string
typeof 1 // number
typeof NaN // number
typeof true // boolean
typeof undefined // undefined
typeof Symbol() // symbol
typeof null // object
typeof [] // object
typeof {} // object
typeof new Date() // object
typeof /test/gi // object
typeof function // function

typeof 연산자로 null 값을 연산해보면 null이 아닌, object를 반환하는 데 주의해야합니다. 이것은 자바스크립트의 첫 번째 버전의 버그입니다. 하지만, 기존 코드에 영향을 줄 수 있기 때문에 아직까지 수정되지 못하고 있습니다.

Key Point💡

값이 null타입인지 확인할 때는 typeof 연산자를 사용하지 말고 일치 연산자(===)를 사용하는 것이 좋습니다.

var foo = null;

typeof foo === null; // false
foo === null; // true

주의💡

선언하지 않은 식별자를 typeof 연산자로 연산해 보면 ReferenceError가 발생하지 않고, undefined를 반환합니다.

// undeclared 식별자를 선언한 적이 없습니다.
typeof undeclared; // undefined

그렇다면 이것을 어떻게 사용하면 좋을까?

// undeclared 가 없을 경우 구현 처리
// 선언자(var, const, let)를 사용하지 않아야 전역으로 사용 가능하다.
if (typeof undeclared === "undefined") {
  undeclared = function () {
    /* ... */
  };
}

// ƒ undeclared() { [native code] }

참고) 네이티브 코드(Native Code)

네이티브 코드 는 CPU와 운영체제가 직접적으로 실행할 수 있는 코드입니다. 보통 우리가 알고 있는 프로그래밍 언어들은 컴파일(Compile)의 과정을 거쳐 운영체제가 실핼할 수 있는 기계어로 번역이 됩니다.

하지만 이러한 방식은 OS 및 HW환경이 달라지면 실행이 불가능해집니다. 네이티브 코드는 프로그래머가 직접 메모리를 할당하고, 해제해야하는 Native한 환경을 갖는 Code입니다. 이를 동적 할당 이라고 하는데, 네이티브 코드를 사용해서 OS에 종속되지 않게 프로그램을 하는 방법으로 사용하기도 합니다.

지수 연산자

ES7에서 도입된 지수 연산자는 좌항의 피연산자를 밑으로, 우하으이 지수로 거듭 제곱하여 값을 반환합니다.

2 ** 2; // 4
2 ** 3; // 8
2 ** 0; // 1
2 ** -2; // 0.25

Key Point💡

지수 연산자를 도입하기 전에는 Math.pow 메서드를 사용했습니다.

Math.pow(2, 2); // 4
Math.pow(2, 3); // 8
Math.pow(2, 0); // 1
Math.pow(2, -2); // 0.25

Key Point💡

지수 연산자는 Math.pow보다 가독성면에서 더 좋습니다.

2 ** (2 ** 2); // 16

Math.pow(Math.pow(2, 2), 2); // 16

주의💡

음수를 거듭 제곱의 밑으로 사용하려면 괄호로 묶어야 합니다.

(-5) ** 2; // 25

지수 연산자는 다른 산술 연산자와 마찬가지로 할당 연산자와 함께 사용할 수 있습니다.

var n = 5;
n **= 2; // 25

또한, 이항 연산자 중에서 우선순위가 가장 높습니다.

2 * 5 ** 2; // 50

그 외의 연산자

연산자
개요

?.

옵셔널 체이닝 연산자

??

null 병합 연산자

delete

프로퍼티 삭제

new

생성자 함수를 호출할 때 사용하여 인스턴스를 생성

instanceof

좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별

in

프로퍼티 존재 확인

요약

  • typeof 연산자는 7가지 문자열 string, boolean, undefined, symbol, object, function 중 하나를 반환한다.

  • 값이 null타입인지 확인할 때는 typeof 연산자를 사용하지 말고 일치 연산자(===)를 사용하는 것이 좋습니다.

  • 선언하지 않은 식별자를 typeof 연산자로 연산해 보면 ReferenceError가 발생하지 않고, undefined를 반환합니다.

  • 네이티브 코드를 사용해서 OS에 종속되지 않게 프로그램을 하는 방법으로 사용하기도 합니다.

  • 지수 연산자는 Math.pow보다 가독성면에서 더 좋습니다.

Last updated