Javascript

Javascript - 조건문 스마트하게 쓰기

Starters 2020. 9. 5. 21:36

1. 특정 값을 여러값들 중에 있는지 확인해야 하는 상황에서

function isAnimal(text){
	return (text === '고양이' || text === '개'
    		|| text === '거북이' || text === '너구리');
}

console.log(isAnimal('개'));
console.log(isAnimal('노트북'));

=> true

=> false

 

이걸 배열로 만들어 사용하면(includes() 함수),

function isAnimal(text){
	const animals = ['고양이', '개', '거북이', '너구리'];
    return animals.includes(text); // 배열 내장함수 includes() -> 배열에 값 유무 확인하고 boolean값 반환
}

console.log(isAnimal('개'));
console.log(isAnimal('노트북'));

화살표 함수로 만들어 사용

const isAnimal = text => ['고양이', '개', '거북이', '너구리'].includes(text);

console.log(isAnimal('개'));
console.log(isAnimal('노트북'));

 

2. 주어진 값에 따라 다른 값을 반환해야 하는 상황

function getSound(animal){
	if(animal === '개') return '멍멍!';
	if(animal === '고양이') return '야옹~';
    if(animal === '참새') return '짹짹';
    if(animal === '비둘기') return '구구구구';
    return '...?';
}

console.log(getSound('개'));		=> 멍멍!
console.log(getSound('비둘기')); => 구구구구
console.log(getSound('인간'));   => ...?

스위치문 써도 되지만 객체 사용하면 더 좋다

function getSound(animal){
	const sounds = {
    	'개': '멍멍!',
        '고양이': '야옹~',
        '참새': '짹짹',
        '비둘기': '구구구구'
    };
    return sounds[animal] || '...?'; // 단축 평가 논리 계산법 사용
}

console.log(getSound('개'));		=> 멍멍!
console.log(getSound('비둘기')); => 구구구구
console.log(getSound('인간'));   => ...?

특정 값에 따라 다른 코드를 실행 시키고 싶을 때,

조건에 따라 다른 동작하고 싶을 때도 객체 사용

function makeSound(animal){
	const tasks = {
    	개: () => {
        	console.log('멍멍!');
        },
        고양이() {
        	console.log('야옹!');
        },
        비둘기: function(){
        	console.log('구구구구');
        }
    }
    
    const task = tasks[animal];
    if (!task){
    	console.log('...?');
        return;
    }
    task();
}

makesound('개');
makesound('비둘기');
makesound('인간');