[모던 자바스크립트 Deep Dive] 7장 연산자

Soyeon·2025년 3월 8일
1

연산자의 종류

연산자는 표현식을 대상으로 연산을 수행해서 값을 만든다.

1️⃣ 산술 연산자

  • 이항 +, -, *, /, % : 피연산자의 값을 변경하는 부수 효과가 없다.

  • 단항 ++, --, +, -

  • 문자열 연결 +

    '1' + 2; // '12'
    1 + 2; // 3
    
    1 + true; // 2
    1 + null; // 1
    
    +undefined; // NaN
    1 + undefined; // NaN

2️⃣ 할당 연산자

  • =, +=, -=, *=, /=, %=
  • 할당문은 표현식인 문일까? 표현식이 아닌 문일까?
    • 값으로 평가되는 표현식인 문이다 !

3️⃣ 비교 연산자

  • 대소 관계 비교

  • 동등 비교(loose equailty) ==: 암묵적 타입 변환으로 타입을 일치시킨 후, 비교한다.

  • 일치 비교(strict equality) ===: 타입도 같고, 값도 같아야 true를 반환한다.

    ✏️ example

    NaN === NaN; // false
    
    0 === -0; // true
    0 == -0; // true

    NaN은 자신과 일치하지 않는 유일한 값이다.
    이 때, Object.is() 메서드를 사용히면 정확한 비교 결과를 얻을 수 있다.

    Object.is(NaN, NaN); // true
    Object.is(-0, +0); // true

4️⃣ 삼항 조건 연산자

5️⃣ 논리 연산자

  • ||, &&, !

6️⃣ 쉼표 연산자

  • 순서대로 피연산자를 평가하고 마지막 피연산자의 평가 결과를 반환한다.

    var x, y, x;
    
    (x = 1), (y = 2), (z = 3); // 3

7️⃣ 그룹 연산자

8️⃣ typeof 연산자

  • 데이터 타입을 문자열로 반환한다.

  • 선언하지 않은 변수를 typeof 로 연산하면, ReferenceError가 발생하지 않고 undefined이 반환된다.

    ✏️ example

    typeof NaN; // NaN
    typeof undefined; // undefined
    typeof null; // object
    typeof function () {}; // function

    이 때, null은 null이 아니라 object가 반환되는 에러가 발생한다. 이는 자바스크립트의 첫 번째 버그다. 다른 코드에 영향을 줄 수 있어서 아직까지 수정하지 않는다고 한다.

    따라서, null 타입인지 확인하려면 === 연산자를 사용해야 한다.

9️⃣ 지수 연산자

🔟 그 외의 연산자

  • 옵셔널 체이닝 연산자 ?.
  • null 병합 연산자 ??
  • 프로퍼티 삭제 delete
  • 생성자 함수 호출할 때 사용해 인스턴스 생성 new
  • 객체가 생성자 함수와 연결된 인스턴스인지 판별 instanceof
  • 프로퍼티 존재 확인 in

연산자의 부수 효과

부수 효과란, 다른 코드에 영향을 주는 효과다.

var x;
x = 1; // 할당문
console.log(x);

x++; // 증가 연산자

var o = { a: 1 };
delete o.a; // delete
profile
탄탄한 개발자로 살아남기🗿

0개의 댓글