본문 바로가기

Today I Learned

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

🔑 키워드 정리

  • 피연산자 : 연산의 대상, 값으로 평가될 수 있는 표현식.
  • 이항 산술 연산자 : 2개의 피연산자를 산술 연산하여 값을 만드는 연산자.
  • 그룹 연산자 : 소괄호((, )) 로 피연산자를 감싸는 연산자. 연산자 우선순위가 가장 높다.
  • 지수 연산자 : ** 연산자로서, 좌항의 피연산자를 밑으로, 우항을 지수로 거듭제곱하여 값을 반환한다. Math.pow 메서드보다 가독성이 좋다.

🗒 내용 정리

  • 산술 연산

어떤 산술 연산을 해도 피연산자의 값이 바뀌는 경우는 없고, 언제나 새로운 값을 반환한다. 단, 증가/감소(++/--) 연산자는 피연산자의 값을 변경한다.

  • 암묵적 타입 변환 또는 타입 강제 변환

숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환시킨다. 피연산자 중에 하나 이상이 문자열이라면 문자열을 연결해서 반환한다.

var x = 1;

x = true;
console.log(+x); // 1

x = false;
console.log(+x); // 0

x = 'Hello';
console.log(+x); // NaN. 문자열은 숫자로 타입 변환할 수 없다.

console.log(x + '2'); // 12

 

  • 비교 연산자

동등 비교 연산자는 암묵적 타입 변환을 해서 값을 비교한다. 결과를 예측하기 어렵고 실수할 수 있기 때문에 되도록 일치 연산자를 사용하는 것이 좋다.

5 == '5'; // true

5 === '5'; // false

NaN은 자신과 일치하지 않는 유일한 값이다.

NaN === NaN; // false

NaN을 비교할 때는 Object.is 메서드를 사용하자.

Object.is(NaN, NaN); // true

 

  • 자바스크립트 첫번째 버전의 버그
typeof null // → "object"

 

  • 삼항 조건 연산자는 if ...else 문과 같이 동작하지만 그것과 달리 값으로 평가할 수 있다.