https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d
var (function scope)
- 전역에서 선언하면 전역에서 인식됨
- function name(){ 이 안에서 선언한 것은 이 안에서만 인식됨 }
- $(function(){ 이 안에서 인식된 것도 이 안에서만 인식되어야 하는데 }) 전역에서도 인식되는 경우가 있음
var 로 선언하는 변수는 function 안에서 선언한 변수가 전역에서도 작동하는 오류(?)가 있다.
- 변수 재선언이 가능하다 (단점)
- 이미 만들어진 변수이름으로 재선언했는데 아무런 문제가 발생하지 않는다.
var a = 'test'
var a = 'test2'
- hoisting으로 인해 ReferenceError에러가 안난다.
c = 'test'
var c
let (block scope)
- 변수 재할당은 가능하나, 변수 재선언은 불가능하다
- 이미 만들어진 변수이름으로 재선언하여 에러 발생
var a = 'test'
var a = 'test2'
- hoisting으로 인해 ReferenceError에러가 안난다.
c = 'test'
var c
const (block scope)
- 변수 재할당, 변수 재선언 둘 다 불가능하다
- 이미 만들어진 변수이름으로 재선언하여 에러 발생
var a = 'test'
var a = 'test2'
- ReferenceError 에러발생
c = 'test'
var c
function scope(var) 과 block scope(let, const) 에 관해서는 하단의 링크 참고
https://medium.com/@khwsc1/번역-자바스크립트-스코프와-클로저-javascript-scope-and-closures-8d402c976d19
위 글은 전반적인 스코프에 대한 설명과 클로저에 대한 설명을 쉽게 잘 풀어놨다
https://medium.com/@saerombang11/javascript-의-변수-variable-과-this-6fa26b07f2ff
위 글은 스코프를 예제를 통하여 잘 설명한 글이다.
위 참조된 블로그를 통해 공부하며 이해해 나가면 도움이 될것같다! :)
'웹 퍼블리셔 기록 > vanila javascript' 카테고리의 다른 글
[JS] 두 배열 비교하여 중복되는 값 찾기 (3) | 2021.03.25 |
---|---|
Number.parseInt vs Number vs parseInt (2) | 2020.06.11 |
AddEventListener 오류 해결방법 (업데이트) (2) | 2020.05.31 |
Math.random/Math.floor 사용하여 랜덤운세 만들기 (0) | 2020.05.31 |
[DAY 01] 홀수, 짝수 판별하기 - %로 나머지값 보기 (0) | 2020.03.31 |