
1) comparison operator
// 숫자 1, 문자 1 비교, true 비교
console.log(`1 == '1' : ${ 1 == '1'}`); //true
console.log(`1 == true : ${ 1 == true }`); //true
console.log(`1 === '1' : ${ 1 === '1' }`); //false
console.log(`1 === true : ${ 1 === true }`);//false
// null과 undefined 비교
// 둘 다 Falsy한 값으로 판단되기 때문에 동등비교는 true
console.log(`null == undefined : ${ null == undefined }`); //true
console.log(`null === undefined : ${ null === undefined }`);//false
//NaN은 자신과 일치하지 않는 유일한 값이다.
console.log(`NaN == NaN : ${ NaN == NaN }`); //false
console.log(`NaN === NaN : ${ NaN === NaN }`); //false
//빌트인 함수 Number.isNaN을 사용해서 확인해야 한다.
console.log(`Number.isNaN(NaN) : ${ Number.isNaN(NaN) }`);
// 대소 비교 연산자
console.log(`'apple' < 'banana' : ${ 'apple' < 'banana' }`); //true
console.log(`'apple' > 'banana' : ${ 'apple' > 'banana' }`); //false
console.log(`'cat' < 'Zoo' : ${ 'cat' < 'Zoo' }`); //false
console.log(`'cat' > 'Zoo' : ${ 'cat' > 'Zoo' }`); //true
1) short circuit evaluation
//apple값이 true 이므로 banana의 참 거짓을 판별할 필요 없이 apple 반환
console.log('apple' || 'banana');
//처음 값이 false 이므로 뒤에 banana 까지 비교해서 banana 값이 반환
console.log(false || 'banana');//처음 apple 값이 true 이므로 뒤의 banana까지 비교하여 banana 반환
console.log('apple' && 'banana');
//처음 값이 false 이므로 뒤의 banana를 비교하지 않고 false 반환
console.log(false && 'banana');var num = 2;
if(num%2 == 0){
console.log('짝수');
}else{
console.log('홀수');
}
num % 2 == 0 && console.log('짝수');
num % 2 == 0 || console.log('홀수');
// obj == null 혹은 obj == undefined일 경우 false 로 판단
// obj가 Falsy 값이면 좌항만 실행하여 val -> null
// obj가 Truthy 값이면 val -> obj.value
var obj = null;
var val = obj && obj.value;
1)Optional chaining operator
var obj = null;
var val = obj?.value;
console.log(val);
2) nullish coalescing operator
var obj = null;
var test = obj??'기본값'; //obj가 null 이므로 기본값 반환
console.log(test);