관리 메뉴

흰둥씨의 개발장

[javascript] Truthy / Falsy 본문

[오늘의 공부]/Javascript

[javascript] Truthy / Falsy

돈워리비해삐 2023. 7. 14. 02:10
//truthy
"글자가있는문자열"? console.log(true) : console.log(false);//true

[]? console.log(true) : console.log(false);            //true(빈배열)

let obj = {} ? console.log(true) : console.log(false); //true(빈객체)

Infinity ? console.log(true) : console.log(false);     //true
 
25 ? console.log(true) : console.log(false);//true

1 ? console.log(true) : console.log(false); //true



//falsy
0 ? console.log(true) : console.log(false); //false

undefined ? console.log(true) : console.log(false);   //false

let empty;
empty ? console.log(true) : console.log(false);       //false

null ? console.log(true) : console.log(false);        //false

"" ? console.log(true) : console.log(false);          //false(빈문자열)

-0 ? console.log(true) : console.log(false);          //false

NaN ? console.log(true) : console.log(false);         //false

 

조건문 쓸 때 falsy한 상황을 이용해서 not연산자와 함께 작성해보기

const getName1 = (obj) => {
	return obj?.name;    //대응 1. 옵셔널
    }
    
const getName2 = (obj) => {
	if(!obj){  //대응2. if문을 쓰자 
               //!obj는 falsy를 이용한 방법 (obj가 falsy라면 !not연산으로 true만들어줌)
               //obj === undefined || obj === null의미와 같음 
    	return undefined 
    }
	return obj?.name;
    }
    
let person1 = null;         //name프로퍼티를 찾을수없는 상황 => 에러남      
let person2 = {};           //name프로퍼티 없음 => undefined
let person3 = { name: "흰둥" }

console.log(getName1(person1),getName1(person2),getName1(person3)) 
console.log(getName2(person1),getName2(person2),getName2(person3))
//undefined undefined 흰둥