함수 매개변수를 구조화할 때 기본적으로 빈 객체를 사용합니까?

4467 단어 discussjavascript
함수 매개변수를 구조화하는 것은 매우 편리합니다.

const fn = ({ foo, bar }) => console.log(foo, bar)


그러나 인수 없이 호출하면 TypeError: Cannot destructure property 'foo' of '_ref' as it is undefined.
(일관적으로, 관례에 따라) 이 문제에 어떻게 접근합니까?

a) 코드가 이 오류에 부딪히게 하고 고차 try-catch까지 버블링되도록 놔두시겠습니까?

const fn = ({ foo, bar }) => console.log(foo, bar)

exort const whatever = function (argsFromOutside) {
  try {
    return fn(argsFromOutside)
  } catch (e) {
    // log error etc.
    return null
  }
}


b) 기본적으로 빈 객체로 설정하시겠습니까?

const fn = ({ foo, bar } = {}) => console.log(foo, bar)


그렇다면 개체의 매개변수도 기본값으로 설정합니까? 이렇게:

const fn = ({ foo = {}, bar = {} } = {}) => console.log(foo.y, bar.x)


나는이 특별한 경우가 있었고 코드를 점점 더 읽을 수 없게 만들었습니다 ...

c) 함수 내부의 구조화

const fn = (args) => {
  if (!args) return
  const { foo, bar } = args
  console.log(foo, bar)
}


이것은 분명히 원래 예제에서와 같이 실제로 동일한 매개변수 분해가 아닙니다.

d) 다른 것?

좋은 웹페이지 즐겨찾기