컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.
어떻게 구현하는가를 디테일하게 기술하는 것에 관점이 있다,
ex) c++ 등 전통적인 언어들
// 명령형으로 작성
function double1(arr){
let resultl = [];
for(let i =0; i < arr.length; i++>){
results.push(arr[i] * 2)
}
return results
}
// 선언형으로 작성
function double2(arr) {
return arr.map(number => number * 2);
}
// double([1, 2, 3]) => [2, 4, 6];
console.log(double1([1, 2, 3]));
console.log(double2([1, 2, 3]));
명령형에서는 어떤 방식으로 하는가를ㄴ 서술하는 반면
선언형에서는 무엇을 할 것이냐가 중요하기 때문에 map의 규칙으로 넣었다.
무엇을 원하는지를 서술하는 것이 간결하고 코드도 쉽다.
따라서 명령형 프로그래밍 보다 선언형 프로그래밍을 지향하는 것이 좋다!
function double1(arr){
let results = [];
for(let i =0; i < arr.length; i++){
if(typeof arr[i] === 'number'){
results.push(arr[i] * 2)
}
}
return results;
}
function double2(arr) {
return arr.filter(param => typeof param === 'number')
.map(number => number * 2);
}
console.log(double1([1, 2, 3, null, a]));
console.log(double2([1, 2, 3, null, a]));
명령형 같은 경우에는 if문을 통해 처리함으로써 점점 중첩되는 식이다.
이런 것이 많아지다 보면 코드의 맥락을 파악하기 어렵다.
또한 어떠한 규칙없이 쓰다보면 유지보수가 굉장히 어렵다.
반면 선언형은 filter로 훨씬 간단하게, 알아볼 수 있게 만들었다.
해야 하는 일을 하나씩 끊어서 하는 것이 훨씬 알아보기 쉽고 간단하다.