var 키워드로 선언한 변수의 문제점
1. 변수 중복 선언 허용
- 변수를 중복 선언하면 초기화문 유무에 따라 다르게 동작한다.
2. 함수 레벨 스코프
- 오로지 함수의 코드 블록만을 지역 스코프로 인정하기 때문에 함수 외부에서 선언한 변수는 코드 블록 내에서 선언했더라도 전역변수가 된다.
3. 변수 호이스팅
- 변수 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작한다.
선언 단계
와 초기화 단계
가 한번에 진행되기 때문에 초기화 단계에서 undefined로 변수를 초기화 시킨다.
- 선언문 이전에 참조할 수 있고 undefined를 반환한다. 👉 가독성 ⬇️, 오류 발생 여지
let 키워드
1. 변수 중복 선언 금지
- 이름이 같은 변수를 중복 선언하면 문법 에러(SyntaxError)가 발생한다.
2. 블록 레벨 스코프
- 모든 코드 블록(함수, if, for,m while, try/catch)을 지역 스코프로 인정한다.
3. 변수 호이스팅
- 변수 호이스팅이 발생하지 않는 것처럼 동작한다.
선언 단계
와 초기화 단계
가 분리되어 진행되기 때문에 초기화 단계는 변수 선언문에 도달했을 때 실행된다.
- 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을
일시적 사각지대(TDZ)
라고 부른다.
const 키워드
주로 상수를 선언하기 위해 사용하지만, 반드시 상수만을 위해 사용하지는 않는다.
1. 선언과 초기화
- 반드시 선언과 동시에 초기화해야하며, 그렇지 않으면 문법에러가 발생한다.
2. 재할당 금지
- var, let과 다르게 const로 선언한 변수는 재할당이 금지된다.
3. const 키워드와 객체
- 객체는 재할당 없이도 직접 변경이 가능하기 때문에 const로 선언한 객체는 변경할 수 있다.
- 재할당을 금지할 뿐 불변을 의미하지는 않는다.
- 이때 객체가 변경되더라도 참조 값은 변경되지 않는다.
var vs let vs const
- ES6를 사용한다면 var 키워드는 사용하지 않는다.
- 재할당이 필요한 경우에만 let을 사용하며 가능한 변수 스코프를 좁게 만든다.
- 그 외에는 모두
const
로 작성한다.
지혜님 안녕하세요.
저는 루쿠쿠라는 회사를 운영 중인 이동욱입니다.
구글 검색을 하다 지혜님의 기술 블로그를 보게 되었고, 채용에 관심이 있어서 연락을 드립니다.
현재 저희 팀에 실력 있는 프론트엔드 개발자를 찾고 있는데, 현재 구직 중이신지 궁금합니다.
간단하게 루쿠쿠 회사 소개를 드리면, 이커머스를 운영하는 회사들의 IT 기술 문제를 해결하는 회사입니다.
진행 프로젝트는 스타트업 발란의 글로벌 스토어(https://balaan.com) 제작 및 제품/ 주문 시스템 연동, 아웃도어 브랜드 살로몬 (https://salomon.co.kr) 스토어 제작, 이외에 논픽션, 스탠드오일 등 여러 이커머스 스토어를 제작 및 IT 기술문제를 해결 하고 있습니다.
주로 쇼피파이 플랫폼을 활용하여 HTML, CSS, vanila JS부터 React(Next.js), 백엔드에서는 Python Django 기술을 다루고 있습니다. 저도 스타트업 개발자 출신이라 회사에서도 계속해서 좋은 기술을 사용하려고 합니다. 회사는 올해로 3년 차인데, 국내외 실력 있는 32명 팀 멤버들과 함께 빠르게 성장 중입니다.
저희 회사 프론트엔드 포지션에 관심 있으신지
이메일이나 문자/전화로 답변 한번 주시면 감사하겠습니다. :-)
HP: 010-4173-6542
EMAIL: dw.lee@lukuku.co