반응형
특정 값이 여러 값중 하나인지 확인해야 할 때
function isAnimal(text) {
return (
text === '고양이' || text === '개' || text === '거북이' || text === '너구리'
);
}
console.log(isAnimal('개')); // true
console.log(isAnimal('노트북')); // false
비교해야 할 값이 많아질 수록 코드는 길어짐
function isAnimal(name) {
const animals = ['고양이', '개', '거북이', '너구리'];
return animals.includes(name);
}
console.log(isAnimal('개')); // true
console.log(isAnimal('노트북')); // false
코드를 간단하게 해결 할 수 있는방법은 배열을 만들고 배열의 includes 함수를 사용하는 것
const isAnimal = name => ['고양이', '개', '거북이', '너구리'].includes(name);
console.log(isAnimal('개')); // true
console.log(isAnimal('노트북')); // false
원한다면, animals 배열을 선언하는 것도 생략하고, 화살표 함수로 작성할 수도 있음
※ 코드가 짧다고 무조건 좋은것은 아님 단, 코드가 짧으면서도 읽었을 때 어떤 역할을 하는지 잘 이해가 될 수 있어야 비로소 좋은 코드
값에 따라 다른 결과물을 반환 해야 할 때
function getSound(animal) {
if (animal === '개') return '멍멍!';
if (animal === '고양이') return '야옹~';
if (animal === '참새') return '짹짹';
if (animal === '비둘기') return '구구 구 구';
return '...?';
}
console.log(getSound('개')); // 멍멍!
console.log(getSound('비둘기')); // 구구 구 구
※if 문의 코드 블록이 한줄짜리라면 { } 를 생략 할 수도 있음
function getSound(animal) {
switch (animal) {
case '개':
return '멍멍!';
case '고양이':
return '야옹~';
case '참새':
return '짹짹';
case '비둘기':
return '구구 구 구';
default:
return '...?';
}
}
console.log(getSound('개')); // 멍멍!
console.log(getSound('비둘기')); // 구구 구 구
switch case 문을 사용하여 다음과 같이 구현 할 수도 있음
※switch 문에서 return 을 할 때에는 break 를 생략해도 됨
function getSound(animal) {
const sounds = {
개: '멍멍!',
고양이: '야옹~',
참새: '짹짹',
비둘기: '구구 구 구'
};
return sounds[animal] || '...?';
}
console.log(getSound('개')); // 멍멍!
console.log(getSound('비둘기')); // 구구 구 구
- 훨씬 더 간략하고 가독성도 좋음
- 특정 값에 따라 반환해야 하는 값이 다른 조건이 여러가지 있을 때는 객체를 활용하면 좋음
반면, 값에 따라 실행해야 하는 코드 구문이 다를 때는?
function makeSound(animal) {
const tasks = {
개() {
console.log('멍멍');
},
고양이() {
console.log('고양이');
},
비둘기() {
console.log('구구 구 구');
}
};
if (!tasks[animal]) {
console.log('...?');
return;
}
tasks[animal]();
}
getSound('개');
getSound('비둘기');
객체에 함수를 넣으면 됨
반응형
'JavaScript > Mordern JavaScript' 카테고리의 다른 글
16.spread 와 rest (0) | 2021.06.30 |
---|---|
15.비구조화 할당 (구조분해) 문법 (0) | 2021.06.30 |
13.함수의 기본 파라미터 (0) | 2021.06.30 |
12.단축 평가 (short-circuit evaluation) 논리 계산법 (0) | 2021.06.30 |
11.Truthy and Falsy (0) | 2021.06.30 |