var 키워드
로컬 변수, 글로벌 변수
scope, 자신의 영역에서만 사용, 공용에 따른 문제방지
글로벌 오프젝트도 scope
var 키워드로 변수 선언이 정상
글로벌 scope 속하는 변수로 선언
편리를 위해 작성하지 않는 것
Use strict
ES5에서 사용
- 함수 안에서 글로벌 변수 선언 방지 - 근본적인 접근은 아님
ES6
Use strict 가 디폴트 환경
전체는 아님
Node.js 에서 ES6 사용
- Use strict 사용
let 변수
var 문제 해결
let sports = “스포츠"
- 스코프를 가진 변수 선언
스코프 범위
- 블록{},문장,표현식
블록안의 블록도 스코프
블록마다 스코프가 다름
각 블록마다 변수 값 유지
let 변수는 호이스팅(hosting) 되지 않음
let 변수 작성방법
Syntax: name1[=value1][,name2[=value12]]
name1, name2에 변수이름작성
식별자로 사용
Value1, value2에 초기값작성
표현식 작성가능, 평가결과사용
값을 할당하지 않고 변수 선언만 가능
Temporal dead zone
같은 스코프안에 같은 변수 사용불가
tip! 자바스크립트에서는 값을 할당하지 않고 변수만 선언시 초기값은 undefined(자바스크립트에서 undefined 는 값)
블록 스코프
Let 키워드의 가장큰 목적
블록{} 형태
let과 this
글로벌 오프젝트에서 this로 let변수 참조 불가
this가 window오브젝트 참조
let과 function
function(){}도 블록 스코프
function 안과 밖에
같은 이름의 let 변수 선언 가능
스코프가 다르기 때문
function 밖의 let 변수들
function 안에 선언하지 않아도
function 안에서 사용가능
var 과같은 개념으로 사용
try-catch
- try-catch도 블록 스코프
switch-case
switch-case 도 블록스코프
case는 해당되지 않음
호이스팅
실행하는 코드의 아래코드 참조
함수 선언문, 함수 표현식, var 변수
let 변수는 호이스팅되지 않음
- let 변수 앞에서 변수 사용 불가
for()
- for() 문을 반복할때마다 스코프를 가짐
const
구문 : const name1[=value][,name2[=value2]]]
Name1에 변수 이름 작성, 식별자로 사용
Value1에 초기값 작성
반드시 값 할당, 변수만 선언 불가
표현식 작성가능, 평가 결과 사용
값을 바꿀 수 없는 변수 선언
Javascript 에는 상수는 대문자 사용이 관례
Const 변수는 소문자를 사용하기도 함
Let 키워드와 기능은 같음