Type Conversion
// Type Conversion: manually convert the type
const inputYear = '1991';
console.log(Number(inputYear), inputYear);
console.log(Number(inputYear) + 18);
console.log(Number('Jonas')); // NaN: Not a Number
console.log(typeof NaN); // (invalid) number
console.log(String(23), 23);
- 수동으로 데이터 타입을 변경하는 것
- Explicit(명시적) coercion, Type casting 이라고도 함
- NaN: Not a Number(invalid number)
- Number, String 등으로 감싸서 타입 변경
Type Coercion
// Type Coercion: js automatically convert the type
console.log('I am ' + 23 + ' years old');
console.log('23' - '10' - 3);
console.log('23' * '2');
// '+','-','*','/' operator triggers type coercion
let n = '1' + 1; // '11'
n = n - 1;
console.log(n); // 10
- JS가 자동으로 데이터 타입을 변경
- Implicit(암묵적) coercion 이라고도 함
- + 연산자가 Number를 자동으로 String으로 변경하는 등 coercion 규칙을 파악하는 것이 중요
Truthy, Falsy
// 5 falsy values: 0, '', undefined, null, NaN
// 그 외에는 모두 truthy
console.log(Boolean(0)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean('Jonas')); // true
console.log(Boolean({})); // true
console.log(Boolean('')); // false
- 5 falsy 값:
0, '', undefined, null, NaN
동등 연산자(Equality Operators)
const age = 18;
// if 문이 한줄이라면 {} 필요 없음
if (age === 18) console.log('You just became an adult');
console.log('18' == 18) // true
console.log('18' == 18) // false
- JS에는 Type Coercion이 있으므로 Strict Equality Operator(===) 와 Loose Equality Operator(==)가 따로 있음
- ===의 경우 Type Coercion을 적용하지 않고 값이 같은지 비교
- 버그를 초래할 수 있으므로 항상 ===를 사용하는 것을 권고
const favorite = prompt("What's your favorite number?");
console.log(favorite);
console.log(typeof favorite); // string
if (favorite == 23) {
console.log('cool, 23 is an amazing number!');
} else if (favorite == 7) {
console.log('7 is also a cool number!');
} else {
console.log('number is not 23 or 7');
}
- prompt로 들어온 값은 String이 되므로 값을 받아 사용하는 경우에 ‘==’을 사용하면 조건이 true가 됨
const favorite = Number(prompt("What's your favorite number?"));
console.log(favorite);
console.log(typeof favorite); // string
if (favorite === 23) {
console.log('cool, 23 is an amazing number!');
} else if (favorite === 7) {
console.log('7 is also a cool number!');
} else if (favorite === 9) {
console.log('9 is also a cool number!');
} else {
console.log('number is not 23 or 7 or 9');
}
논리 연산자(AND, OR, NOT)
const hasDriverLicense = true;
const hasGoodVision = false;
console.log(hasDriverLicense && hasGoodVision); // false;
console.log(hasDriverLicense || hasGoodVision); // true;
console.log(!hasDriverLicense); // false
const shouldDrive = hasDriverLicense && hasGoodVision;
// if (shouldDrive) {
// console.log('Sarah is able to drive!');
// } else {
// console.log('Someone else should drive...');
// }
const isTired = false;
if (hasDriverLicense && hasGoodVision && !isTired) {
console.log('Sarah is able to drive!');
} else {
console.log('Someone else should drive...');
}
Related