백고등어 개발 블로그
자바스크립트 스코프와 "let" vs "const" vs "var" 키워드 비교 본문
- 자바스크립트는 변수나 상수, 매개변수가 생성될 때 스코프가 정해집니다.
- 이때 각 변수, 상수, 매개변수가 미치는 범위를 스코프라고 합니다.
- 스코프에는 글로벌 스코프와 로컬 스코프가 존재합니다.
글로벌 스코프 VS 로컬 스코프 비교
- 스코프란 현재 접근할 수 있는 변수들의 범위를 뜻합니다.
글로벌 스코프
- 글로벌 스코프란 전역 변수 또는 함수를 뜻하기도 합니다.
- 내부 스코프(함수의 내부 스코프 등..) 에서 전역 변수 또는 함수에 접근 할 수 있습니다
- 예를 들면 아래와 같습니다
- myName 변수는 글로벌 스코프를 갖는 전역 변수로 선언되었습니다 즉, 함수 내부에서도 myName 변수에 접근할 수 있습니다
로컬 스코프
- 로컬 스코프란 블록 또는 함수 내에서만 접근할 수 있는 변수이며, 지역 변수를 뜻하기도 합니다.
- 첫 번째 글로벌 스코프의 예시에서 myName은 전역 변수로 선언되었지만, 두 번째 경우에서 myName은 callingName 함수 내의 지역 변수로도 선언되었습니다. 따라서 해당 함수 내에서 myName 변수를 호출할 경우 HwiJeong 이 출력됩니다.
- 주의해야 할 것은 두번째 myName 로컬 변수가 글로벌 변수를 덮어쓰는 것이 아니며, 두 변수는 각각 다른 데이터로 존재한다는 것 입니다.
let VS const VS var 키워드 간단 비교
let | const | var | |
유효 범위 | Block Scope | Block Scope | Function Scope |
값 재정의 | Yes | No | Yes |
재선언 | No | No | Yes |
더 자세한 내용은 아래의 블로그를 참고해주시길 바랍니다
전역 변수와 window 객체
- 글로벌 스코프에서 선언된 변수 또는 함수, 그리고 var 키워드를 이용해 선언된 변수는 window 객체와 연결됩니다.
- 전역 범위에 너무 많은 변수를 선언하지 않도록 주의 하시길 바랍니다!
선언없이 초기화된 변수
- 선언없이 초기화할 경우 'strict' 모드를 사용하지 않는 한 버그가 발생하는 코드를 작성할 수도 있습니다
- 'strict' 모드란?
- ECMAScript 5에서 처음으로 소개된 strict 모드는 자바스크립트 코드에 더욱 엄격한 오류 검사를 적용해 줍니다.
- strict 모드는 자바스크립트 파일의 맨 위에 "use strict" 지시어를 사용하여 선언할 수 있습니다.
'javascript' 카테고리의 다른 글
자바스크립트 splice 메소드 사용시 주의점 (0) | 2020.10.15 |
---|---|
Javascript 이벤트와 이벤트 중단 (0) | 2020.09.23 |
DOM 노드의 생성, 수정, 삭제 (0) | 2020.09.23 |
자바스크립트 Rest Parameter / Spread Operator (0) | 2020.09.18 |
자바스크립트 클로저 (0) | 2020.09.15 |