자바스크립트 타입 변환, truthy와 falsy, 동등 연산자(==, ===), 논리연산자

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...');
}
  • AND: &&
  • OR: ||
  • NOT: !

Leave a Reply

Your email address will not be published. Required fields are marked *