• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

질문있습니다.

21.08.17 20:42 작성 조회수 140

0

선생님 안녕하세요. 인터렉티브 웹사이트 강의 중간까지 듣고

애플클론 강의를 듣고 있습니다. 이런 강의를 만들어주신거에 감사함을 느낍니다.

인터렉티브 웹사이트에서도 언급하셨지만

전역변수 사용을 막기위해서 현 강의들에서는 익명함수안에서 정의를 하시는 걸로 이해하고 있습니다.

그러지 않고, 각 js 파일에서 다음과 같이 처리하는 것도, 블록 Scope 안에서 사용하는 것이랑은 다른걸까요 ?

{
  const arr = [123];
}

console.log(arr);

답변 1

답변을 작성해보세요.

0

const나 let을 사용하면 알고계신 것과 같이 블록 {} 스코프로 동작을 하는데요, 그래서 작성하신 것처럼 하셔도 되는데, 함수를 이용해 모듈을 만들거나 아래처럼 실행할 때 외부에서 사용하는 변수를 안전하게 치환해서 사용할 일이 있기도 해서 관례적으로 함수로 많이 사용해오던 경향이 있습니다.
(function ($) {
    // 이런 식으로 jQuery 변수를 $로 안전하게 치환
})(jQuery);

저도 버릇처럼 함수로 사용하고 있었는데, 이런게 필요한 경우가 아니라면 작성하신 것 처럼 하시는게 더 간단하고 좋을 수 있을 것 같습니다.

참고로, (이미 알고 계실 것 같지만^^) ES6의 모듈을 사용하면 모듈 단위로 변수 스코프가 만들어져서 따로 함수로 감싼다거나 할 필요가 없습니다.