함수매개변수와 구조분해할당

lee jae hwan·2022년 7월 24일

javascript

목록 보기
30/107
function fn(width){
  console.log(width);
}
fn(100);

function fn([width]){
  console.log(width);
}
fn([100]);

function fn({width}){
  console.log(width);
}
fn({width:100});

자바스크립트는 함수인자와 매개변수를 구조분해할당을 지원한다.
구조분해의 첫번째 장점은 필요한 인자만 취할수 있다는 것이다.

function showMenu(title = "Untitled", width = 200, height = 100, items = []) {
  // ...
}
showMenu("My Menu", undefined, undefined, ["Item1", "Item2"])

구조분해를 사용하지 않으면 위와 같이 인자갯수에 맞추어야 하고 가독성이 떨어진다.
따라서 구조분해를 사용하는것이 좋다.

let options = {
  title: "My menu",
  items: ["Item1", "Item2"]
};

function showMenu({title = "Untitled", width = 200, height = 100, items = []}) {
  alert( `${title} ${width} ${height}` ); // My Menu 200 100
  alert( items ); // Item1, Item2
}
showMenu(options);

함수에 전달할 객체를 미리 정의하기때문에 가독성이 좋아지고 함수호출시에는 객체만 전달하면 된다.

함수매개변수는 객체구조분해할당을 사용하여 원하는 프로퍼티와 기본값등을 사용하면 유연성이 좋아진다.



showMenu({});

위와같이 빈객체를 전달하면 정상적인 객체구조분해할당이 이루어진다. 그러나 프로퍼티들의 값들은 초기값이 없으면 undefined가 할당되고 스크립트가 중단되지 않는다.

showMenu();

let {name} = undefind;와 같이 우항에 객체가 없으면 에러가 발생한다.

function f1({title:t,items,width=100,height=200}={}){
	....
}

매개변수 객체의 기본값을 제공하면 되는 것이다.

0개의 댓글