211025_개발자 준비하기(24일차) - var, 즉시실행 함수 표현식

주형(Jureamer)·2022년 1월 3일
0

Diary

목록 보기
11/14

오늘 배운 것

  • 엄격모드 - "use strict" 혹은 'use strict'를 최상단에 위치시키게 되면 ES5 이후의 변경사항들이 활성화 시키게 된다.

    이는 ES5 버전이 출시된 이후 호환성에 영향을 줄 수 있는 업데이트들을 하였고, 오래 전에 작성된 코드들이 문제가 생기지 않게 Default로 이러한 변경사항을 비활성화 시켜놓았는데 'use strict'를 통해 이것을 활성화 시켜주게 되면 변경사항이 적용이 된다. → 좀 더 모던하고 엄격한 방향으로 코드를 작성하고 디버깅 할 수 있다는 말이다. 하지만 클래스와 모듈에는 자동으로 이 모드가 적용이 되어 굳이 use strict를 쓸 필요는 없다고한다.

    정확히 어느 용도에 따라 써도되고 안써도 되는 지를 습득하기 전까지는 'use strict'를 항상 최상단에 올려놓고 쓰도록 해야겠다!

  • var에 대한 것.

    내가 고등학교 시절 잠깐 배운 프로그래밍에선 var로 기본적인 변수를 선언하였다. 그런데 최근에 다시 배울땐

    let, const를 이용해서 무조건 선언하라고 한다.

Untitled

그 이유인 즉슨, var는 초기 스크립티 구현 방식으로, 블록 기준으로 스코프가 생기지 않고 함수 스코프나 전역 스코프에 해당된다. 그래서 if문이나 for문이 끝나도 그 변수를 계속 선언할 수 있게 된다.

Untitled

  • 즉시실행 함수 표현식(IIFE: immediately-invoked function expressions)

과거엔 var만을 사용할 수 있었고, var의 스코프는 블록레벨 수준은 아니었다. 그래서 개발자들은 var의 스코프를 블록레벨 수준으로 만들길 원했고, 그래서 만들어낸 것이 '즉시실행함수 표현식'이라고 한다.

Untitled

이를 통해 해당 함수 내에서 선언된 var변수는 함수 스코프를 갖고 있기에 함수 안에서만 적용되는 '블록스코프'로서의 기능을 할 수 있게 된 것이다.

Reference

https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

https://poiemaweb.com/es6-block-scope#13-호이스팅

profile
작게라도 꾸준히 성장하는게 목표입니다.

0개의 댓글