'ab' > 'aa' //true
'a' > 'B' // true
'a' > 'b' // false
같은 내용을 가진 객체 또는 배열 두 개를 비교하면 false로 나옴
내용이 같다고 같은 객체가 아님
하지만 const a = obj1, a==obj1은 true임
객체 또는 배열 내의 값을 따로 비교할 수는 있음
AND &&
OR ||
0: false
ANY other number(incl. negative numbers): true
""(empty string): false
ANY other non-empty string: true
{}, [] & all other objects or arrays: true(빈 객체도 참)
null, undefined, NaN: false
const userName = 'Max';
const altName = '';
console.log(userName === 'Max'); // 불리언 값 참을 생성하고 출력
console.log(userName); // 문자열 'Max'에서 변경되지 않음
console.log(userName || null); // userName이 Truthy이므로 ||로 'Max'가 반환됨
console.log(altName || 'Max'); // altName은 (빈 문자열이므로)Falsy이며 'Max'가 반환됨
console.log(altName || ''); // altName과 ''는 모두 Falsy이지만 만일 첫 피연산자가 Falsy라면 항상 두 번째 피연산자가 반환되므로 ''이 반환됨
console.log(altName || null || 'Anna'); // altName과 null은 Falsy이므로 'Anna'가 반환됨
console.log(userName && 'Anna'); // userName은 Truthy이므로 두 번째 (!) 값인 'Anna'가 반환됨
console.log(altName && 'Anna'); // altName은 Falsy이므로 첫 번째 값인 ''이 반환됨
console.log(userName && ''); // userName은 Truthy이므로 두 번째 값인 ''이 반환됨
===, >등은 단지 비교에 쓰이는 불값만 생성합니다. || 와 && 는 불리언을 생성하는 것이 아니라, 연산자 전후에 있는 값을 조건으로 취급합니다 (따라서 불값을 산출하고 필요한 경우 불리언으로 강제 변환됩니다).
위에서 설명한 작동 방식 때문에 JavaScript에서는 || 으로 변수/상수에 기본/대체 값을 할당합니다.
const enteredValue = ''; // let's assume this is set based on some input provided by the user, therefore it might be an empty string
const userName = enteredValue || 'PLACEHOLDER'; // will assign 'PLACEHOLDER' if enteredValue is an empty string
단일 느낌표는 truthy 값을 실제 거짓 값으로 변환
또 다른 느낌표로
빈 문자열 앞에 !!을 사용하면 falsy 해석 대신 실제 true, false 값이 된다.
for (let i = 0; i < 3; i++) {
console.log(i);
}
for (const el of array) {
console.log(el);
}
for (const key in obj) {
console.log(key);
console.log(obj[key]); // 키 이름을 가진 쌍에 동적 접근
}
while (isLoggedIn) {
...
}
try {
chosenMaxLife = getMaxLifeValues();
} catch (error) {
console.log(error);
chosenMaxLife = 100;
alert('You entered something wrong');
throw error; // 오류를 기록하고 다시 발생시켜서 사용자에 오류 메시지 표시
} finally {
// clean up 작업
}