js-재선언과 재할당,let과 const

쁘띠경·2024년 7월 25일

js

목록 보기
22/41


재선언


재할당

var를 이용한 변수는 호이스팅 이외에도 '재선언'과 '재할당'을 할 수 있다.
재선언이란, 같은 이름의 변수를 var를 붙여 여러 번 선언하는 것을 말하고,
재할당이란 만들어진 변수에 값을 계속 여러 번 집어넣는 것을 말한다.

let과 const

var예약어를 사용하는 변수는 함수영역에 스코프를 가진다.
즉 스크립트 소스 전체에서 사용할 수 있고, 또한
재할당과 재선언을 할 수 있다.
그래서 var예약어를 사용하면 잘 못 했을 경우 예상하지 못 한 프로그램 오류를
발생시킬수도 있다.
그래서 ES6버전부터는 var의 단점을 보완한 let과 const라는 예약어가 새롭게
등장했다. let과 const도 var와 마찬가지로 변수를 만드는
키워드이다.

let

ES6이전의 자바스크립트 프로그램에서는 var예약어로만 변수를 선언할 수 있었다.
그래서 실수로 var라는 예약어를 빠뜨리면 의도하지 않게 전역변수가 되기도 하고,
프로그램 길이가 길어지다보면 실수로 사용하는 변수를 다시 재선언하거나 값을
재할당 해버리는 실수를 해버리는 경우가 생기기도 한다.
그래서 let과 const가 등장 되도록이면 var는 사용하지 않기를 권장하고 있다.

let예약어로 선언한 변수는 선언한 블록({}로 묶어진 부분) 안에서만 유효하고,
블록을 벗어나면 사용할 수 없다. 여기서 블록이란 for문이나 if문 switch문이나 함수처럼
어떤 문장 안을 뜻한다. 이것을 멋진말로 블록 레벨의 스코프를 가진다고 표현한다.
var처럼 전역에서 쓰이는 변수는 멋진말로 '함수 레벨의 스코프를 가진다'고 표현하고
스크립트 소스 전체를 의미한다.


함수 레벨의 스코프


블록 레벨의 스코프
if문 전체를 말하는 것이다.



이런식으로 정리할 수 있다.

만약


sum은 for문안으로 들어갈 수 있지만
i는 밖으로 나가지 못 한다.
블록레벨 스코프이다.

변수 sum은 calcSum()함수 안이 유효범위라서 for문 안까지 들어갈 수 있다.
변수 i는 for문이 유효범위라서 for안에서만 쓸 수 있고 for문 밖에선 안 됨.

profile
안녕하세요 ! 발전을 위해 매일 도전하는 퍼블리셔 류영경입니다.

0개의 댓글