작성한 질문수
프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
웹팩이 필요한 이유와 기본 동작
작성
·
210
1
스코프 관련해서는 항상 당연한듯 IIFE 로 하다가 생각해 보니 일반 코드 블럭으로 해도 되는거 아닌가? 하는 생각이 들어서 질문드립니다.
두 방식 모두 2:45에서 처럼 결과가 콘솔창에 잘 나오고
각 sum 함수만 접근 가능한 num 변수를 선언할 수도 있는데 (스코프 개념) IIFE 를 사용하신 이유가 있나요??
답변 2
0
IIFE 앞에
;(function . . .
왜 세미콜론이 붙는지 궁금하네요
자바스크립트 엔진이 코드를 해석할때 세미콜론이 누락된 곳에 추가하는 단계(asi)가 있는데요.
어떤 경우에는 세미콜론을 붙일 수 없어서 의도한대로 코드가 실행되지 않을수 있는 경우가 있어요.
foo()
(function() {})()
이런 경우인데요. asi가 한문장으로 여길수 있기 때문에 의도한 코드가 되지 않죠. 그래서 즉시 함수 실행같은경우 앞에 세미콜론을 붙여주기도 합니다.
기존에 함수 스코프를 사용하는 경우 iife 로 스코프를 격리한 것을 말씀드렸어요.
let이나 const 같은 경우는 블로 스코프를 사용하기 때문에 중괄호를 이용해 외부 접근을 막을 수 있는데요. 만약에 var num 로 선언한 변수라면 블록 외부에서 접근할 수 있게 됩니다.
자바스크립트 엔진이 코드를 해석할때 세미콜론이 누락된 곳에 추가하는 단계(asi)가 있는데요.
어떤 경우에는 세미콜론을 붙일 수 없어서 의도한대로 코드가 실행되지 않을수 있는 경우가 있어요.
foo()
(function() {})()
이런 경우인데요. asi가 한문장으로 여길수 있기 때문에 의도한 코드가 되지 않죠. 그래서 즉시 함수 실행같은경우 앞에 세미콜론을 붙여주기도 합니다.