2.1) Truthy와 Falsy


// 1. Falsy한 값
let f1 = undefined;
let f2 = null;
let f3 = 0;
let f4 = -0;
let f5 = NaN;
let f6 = "";
let f7 = 0n;
// 2. Truthy 한 값
// -> 7가지 Falsy 한 값들 제외한 나머지 모든 값
let t1 = "hello";
let t2 = 123;
let t3 = [];
let t4 = {};
let t5 = () => {};
// 3. 활용 사례
function printName(person) {
if (!person) {
console.log("person의 값이 없음");
return;
}
console.log(person.name);
}
let person = { name: "이정환" };
printName(person);
2.2) 단락평가

function returnFalse() {
console.log("False 함수")
return false;
}
function returnTrue() {
console.log("True 함수")
return true;
}
function returnFalsy() {
console.log("Falsy 함수")
return undefined;
}
function returnTruthy() {
console.log("Truthy 함수")
return 10;
}
console.log(returnFalse() && returnTrue()); // "False 함수" false;
console.log(returnFalsy() && returnTruthy()); // "Falsy 함수" undefined;
// 단락 평가 활용 사례
function printName(person){
// 방법 1
// if(!person) {
// console.log("person에 값이 없음");
// return;
// }
// console.log(person.name);
// 방법 2
// console.log(person && person.name);
// 방법 3
const name = person && person.name;
console.log(name || "person의 값이 없음")
}
printName();
printName({ name: "이정환" });
2.3) 구조분해할당
// 1. 배열의 구조 분해 할당
let arr = [1, 2, 3];
// 방식 1
// let one = arr[0];
// let two = arr[1];
// let three = arr[2];
let [one, two, three, four = 4] = arr;
// console.log(one, two, three, four);
// 2. 객체의 구조 분해 할당
let person = {
name: "이정환",
age: 27,
hobby: "테니스",
};
let {
age: myAge,
hobby,
name,
extra = "hello",
} = person;
// 3. 객체 구조 분해 할당을 이용해서 함수의 매개변수를 받는 방법
const func = ({ name, age, hobby, extra }) => {
console.log(name, age, hobby, extra);
};
func(person);
2.4) Spread 연산자와 Rest 매개변수
// 1. Spread 연산자
// -> Spread : 흩뿌리다, 펼치다 라는 뜻
// -> 객체나 배열에 저장된 여러개의 값을 개별로 흩뿌려주는 역할
let arr1 = [1, 2, 3];
// let arr2 = [4, arr1[0], arr1[1], arr1[2], 5, 6];
let arr2 = [4, ...arr1, 5, 6];
let obj1 = {
a: 1,
b: 2,
};
let obj2 = {
...obj1,
c: 3,
d: 4,
};
function funcA(p1, p2, p3) {
// console.log(p1, p2, p3);
}
funcA(...arr1);
// 2. Rest 매개변수
// -> Rest는 나머지, 나머지 매개변수
// 2. Rest 매개변수
// -> Rest는 나머지 , 나머지 매개변수
function funcB(one, two, ...ds) {
console.log(ds);
}
funcB(...arr1);
2.5) 원시타입 VS 객체타입







