오늘 한 것
연산자
표현식인 피연산자와 연산자의 조합으로 값으로 평가될 수 있는 표현식인 연산자 표현식을 이룬다.
1 | // 산술 연산자 |
산술 연산자
1 | 5 / 2; // -> 2.5 |
JavaScript는 number 타입이 모두 실수기 때문에 정수를 나눠 실수값을 얻을 수도 있다.
단항 산술 연산자
단항 산술 연산자인 증가/감소(++/–) 연산자는 위치에 의미가 있다.
1 | var x = 5, |
단항 산술 연산자에는 +
, -
도 있다.
1 | // + 연산자는 아무런 효과가 없다. |
+
연산자는 언제 사용할까?
1 | var x = "1"; |
숫자 타입으로 변환한 값을 생성해서 반환한다. 하지만 변수 값 자체를 바꾸지는 않는다.
-
연산자는 부호를 반전하거나 숫자 타입으로 변환한다. 하지만 변수 값 자체를 바꾸지는 않는다.
1 | // 부호를 반전한다. |
문자열 연결 연산자
1 | // 문자열 연결 연산자 |
위와 같이 서로 연산할 수 없는 타입끼리 만나면 JS 엔진에 의해 암묵적 타입 변환(implicit coercion) 또는 타입 강제 변환(type coercion)이 일어난다.
비교 연산자
비교 연산자(comparison operator)는 좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환한다.
동등비교(==) 연산자는 타입이 달라도 암묵적 타입 변환을 통해 비교된 값만 같으면 동등하다.
1 | "0" == ""; // -> false |
일치 비교(===) 연산자는 좌항과 우항의 피연산자가 타입과 값이 모두 같은 경우에 true를 반환한다.
1 | 5 === "5"; // -> false |
주의할 점!
1 | //NaN은 자신과 일치하지 않는 유일한 값이다. |
위 처럼 +0, -0은 같게 판단하고 NaN끼리는 다르다 그래서 Object.is()
가 생겼다.
1 | -0 === +0; // -> true |
부동등 비교 연산자(!=)와 불일치 비교 연산자(!==)는 다른지를 판단하는 개념이다.
1 | // 부동등 비교(타입은 논외) |
논리 연산자
논리 연산자(logical operator)는 우항과 좌항의 논리관계를 연산한다.
1 | // 논리합(||) 연산자, 하나만 true면 true |
지수 연산자
좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.
1 | 2 ** 2; // -> 4 |
참고 도서: 모던 자바스크립트 Deep Dive
오늘 느낀 것
- C랑 Java랑 비슷하지만 새로 배우는 것도 있었다. 배움 앞에 겸손하자.