Not a number를 의미한다. 숫자 계산할 경우 피연산자로 문자나 숫자가 아닌 값이 포함되어 있을 경우 숫자가 아니라는 의미인 NaN를 반환한다.
+
단항 연산자는 숫자 타입에는 어떠한 효과가 없다.
하지만 숫자가 아닌 타입에 사용할 경우 숫자 타입으로 변환한다.
var x = '1';
console.log(+x) // 1
x = true;
console.log(+x) // 1
x = false;
console.log(+x) // 0
x = "Hello"
console.log(+x) //NaN
-
는 숫자타입은 부호를 반전한다.
그리고 마찬가지로 숫자가 아닌 타입에 사용할 경우 숫자 타입으로 변환한다. 이때 부호를 반전한다.
-(-10) // 10
-'10' // -10
-true // -1
-'hello' //NaN
+
연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 작동한다.
'1' + 2 // '12'
1 + true // 2
1 + false // 1
1 + null // 0
1 + undefined // NaN
여기서 타입이 다를 경우 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되기도 한다.
var a, b, c;
a = b = c = 0;
console.log(a, b, c) // 0, 0, 0
a = b = c = 0
이 식에서 오른쪽에서 왼쪽으로 할당이 진행된다.
즉 c = 0 는 0으로 평가되고
b = 0 는 0으로 평가되고
a = 0으로 평가된다.
==
이것과 ===
차이는 무엇일까?
==
동등비교는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교한다.
5 == 5; // true
5 == '5'; // true
===
일치 비교 연산자는 좌항과 우항의 피연산자 타입도 같고 값도 같은 경우에만 true를 반환한다.
5 === 5; // true
5 === '5'; // false
여기서 NaN은 연산이 실패했을 때 나오는 값이다. 그렇기 때문에 자기 자신과 일치하지 않다고 판단한다.
NaN === NaN // false
,
연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가를 반환한다.
x = 1, y = 2, z = 3 // 3
데이터 타입을 문자열로 반환한다.
면접 예상 질문
==
이것과===
차이는 무엇일까?동등 비교 연산자는 암묵적 타입 변환을 통해 타입을 일치시킨 후 값을 비교합니다.
반면 일치 비교 연산자는 타입과 값이 같아야지 true를 리턴합니다.