연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산등을 수행해 값을 생성한다.
산술연산자들은 산술 연산이 불가능할 경우 NaN
을 반환한다.
이항 산술연산자들은 피연산자의 값을 변경하는 부수 효과가 없다.
단항 산술 연산자는 1개의 피연산자를 산술연산해 숫자 값을 만든다. 이때 증감연산자들은 피연산자의 값을 변경하는 부수효과가 있다.
+는 숫자 타입이 아닌 피연산자에 단항연산자로 사용될때 피연산자를 숫자 타입으로 변환하여 반환한다. 이 과정은 숫자 타입으로 변환한 값을 생성해서 반환하므로, 부수효과는 없다.
console.log(+'012345');
+
는 피연산자 중 하나 이상이 문자열일 경우 문자열 연결 연산자로 동작한다. 이때 주목할 것은 +
가 타입 강제 변환을 한다는 것이다.
'1'+2 // '12'
+
연산자를 사용할때, true는 1로, false는 0으로 타입 변환된다.
1+true // 2
특별한건 없다.
JS에는 동적 언어의 특성상 동등(loose equality) / 일치(strict equality) 비교 연산자라는게 있다.
일반적인 ==
는 동등연산자라고 한다. 동등연산자는 암묵적 타입 변환을 통해 타입변환을 했을때 같은 값인지를 비교한다.