모던 자바스크립트 Deep Dive 정리
증가/감소(++/--) 연산자
▶ 증감 연산자는 위치에 의미가 있다
▷ 전위 연산자 : 먼저 피연산자의 값을 증가/감소시킨 후 다른 연산을 수행
// 전위 연산자 예시
// ...
return ++this.size; // size를 1 증가시킨 값을 리턴
// ...
▷ 후위 연산자 : 먼저 다른 연산을 수행한 후, 피연산자의 값을 증가/감소
// 후위 연산자 예시
const x = 1;
console.log(x++); // 1
console.log(x); // 2
문자열 연결 연산자
▶ + 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다
비교 연산자
▶ 동등/일치(==/===) 비교 연산자
비교 연산자 | 사례 | 설명 |
== | x == y | x와 y의 값이 같음 |
=== | x === y | x와 y의 값과 타입이 같음 |
!= | x != y | x와 y의 값이 다름 |
!== | x !== y | x와 y의 값과 타입이 다름 |
▷ 동등(==) 연산자는 좌항과 우항이 암묵적 타입변환 후에 같은 값일 수 있다면 true를 반환한다
▷ 참고 (Object.is() 가 제일 정확)
// NaN은 자신과 일치하지 않는 유일한 값이다
NaN === NaN; // false
// 이를 해결하기 위해 isNaN 함수를 사용한다
isNaN(NaN); // true
isNaN(1 + undefined); // true
// ES6에서 도입된 Object.is() 메서드는 예측가능한 정확한 비교 결과를 반환한다
+0 === -0; // true
Object.is(+0, -0); // false
Object.is(NaN, NaN); // true
typeof 연산자
▶ null, 배열([ ]), Date, 정규표현식 객체도 뭉뚱그려서 Object로 반환된다
typeof '' // -> "string"
typeof 1 // -> "number"
typeof NaN // -> "number"
typeof true // -> "boolean"
typeof undefined // -> "undefined"
typeof Symbol() // -> "symbol"
typeof null // -> "object"
typeof [] // -> "object"
typeof {} // -> "object"
typeof new Date() // -> "object"
typeof /test/gi // -> "object"
typeof function () {} // -> "function"