7,8장. 연산자와 제어문
==
형변환을 암묵적으로 해준 후 값을 비교한다.
숫자와 문자열을 비교하는 경우 모두 문자열로 변환해서 비교한다.
원시타입과 객체를 비교할 때에는 객체가 원시타입으로 변환된다.
3 == '3'; // true
==은 null과 undefined를 동일하게 다룬다.
즉, null or undefined를 감지할때 ==를 쓰면 좋다!
===
형변환을 하지 않고 값을 있는 그대로 비교해준다.
3 === '3'; // false
Object.is()
아래와 같이 예측 가능한 정확한 비교 결과를 반환한다.
- NaN과 NaN 비교 결과가 true다.
- +0과 -0 비교 결과가 false다
위 두가지 경우를 제외하고는 ===와 동일하게 동작한다.
-0 === +0; // true
Object.is(-0, +0); // false
/****************************/
NaN === NaN; // false
Object.is(NaN, NaN); // true
&&
논리곱 연산자이다.
특징은 가장 왼쪽의 피연산자부터 시작하여 오른쪽으로 나아가며 평가한다.
true && false && true && false; // 두번째 false까지 검사함
true && true && true && false; // 마지막 false까지 다 검사함
typeof
데이터 타입을 문자열로 반환한다.
주의점은
undefined는 undefined로 반환되지만,
null은 object로 반환된다.
8장 제어문은 쓸게 없네요... 면접에 나올것 같지도 않고... 스킵!