-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
문득 궁금해서 질문 드립니다.
21.07.11 18:01 작성 조회수 144
1
스코프 관련해서는 항상 당연한듯 IIFE 로 하다가 생각해 보니 일반 코드 블럭으로 해도 되는거 아닌가? 하는 생각이 들어서 질문드립니다.
두 방식 모두 2:45에서 처럼 결과가 콘솔창에 잘 나오고
각 sum 함수만 접근 가능한 num 변수를 선언할 수도 있는데 (스코프 개념) IIFE 를 사용하신 이유가 있나요??
답변을 작성해보세요.
0
김정환
지식공유자2021.11.16
자바스크립트 엔진이 코드를 해석할때 세미콜론이 누락된 곳에 추가하는 단계(asi)가 있는데요.
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Lexical_grammar#%EC%9E%90%EB%8F%99_%EC%84%B8%EB%AF%B8%EC%BD%9C%EB%A1%A0_%EC%82%BD%EC%9E%85
어떤 경우에는 세미콜론을 붙일 수 없어서 의도한대로 코드가 실행되지 않을수 있는 경우가 있어요.
foo()
(function() {})()
이런 경우인데요. asi가 한문장으로 여길수 있기 때문에 의도한 코드가 되지 않죠. 그래서 즉시 함수 실행같은경우 앞에 세미콜론을 붙여주기도 합니다.
0
김정환
지식공유자2021.07.12
기존에 함수 스코프를 사용하는 경우 iife 로 스코프를 격리한 것을 말씀드렸어요.
let이나 const 같은 경우는 블로 스코프를 사용하기 때문에 중괄호를 이용해 외부 접근을 막을 수 있는데요. 만약에 var num 로 선언한 변수라면 블록 외부에서 접근할 수 있게 됩니다.
답변 2