1. let 키워드
1) 함수 안에 작성한 let변수는 함수가 스코프입니다.
2) 함수 안에 if(a=b){let sports="축구"} 형태인경우, sports 변수는 함수가 스코프가 아니라 if문의 블록 {} 이 스코프이다.
3) 블록 {} 밖에 같은 이름의 변수가 있어도 스코프가 다르므로 변수 각각에 값을 설정할 수 있으며 변수 값이 유지된다.
4) 블록 안에 블록을 계층적으로 작성하면 각각의 블록이 스코프가 된다.
5) 같은 스코프에서 같은 이름의 let 변수를 선언할 수 없습니다.
6) let 변수는 호이스팅(hoisting)되지 않는다.
"use strict";
// 변수범위 확인
var one = 100; // 글로벌 변수
let music = "재즈";
function get() {
var one = 300; // 블록스코프
let music = "팝";
console.log("함수:",one);
console.log("글로벌 호출:",this.one); // this.변수
console.log("장르:",this.music);
}
window.get();
/*
함수: 300
글로벌 호출: 100
장르: undefined
*/
// get()함수 안에서 this가 window 오브젝틀르 참조
try{
get(); // window 오브젝트를 참조하지않고 호출
} catch (e) {
/*
함수: 300
// TypeError: Cannot read property 'one' of undefined
*/
console.log(e);
}
console.log("글로벌:",one); // 2 3
// 변수 선언방식
let two = 2, three = 3;
console.log(two,three);
// 기본값 확인
let four;
console.log(four); // undefined 는 값이다.
// ------------------
// 스위치문
function swF(count){
switch (count) {
case 1:
console.log("1");
break;
case 2:
console.log("2");
break;
default:
console.log("default");
}
}
for(let i=1; i<4; i++){
swF(i);
}
// --------------
// 호이스팅 : 호출될 함수를 아래에 작성해도 함수가 호출됨, 단 let은 안됨
console.log(A); // undefined
var A = "스포츠";
try{
console.log(B);
let B = "e스포츠";
} catch (e) {
console.log(e); // ReferenceError: Cannot access 'B' before initialization
}
const C = "변수할당";
try{
C = "값변경시도";
console.log(C);
} catch (e) {
console.log(e); // TypeError: Assignment to constant variable.
}
반응형
'WEB > ECMAScript' 카테고리의 다른 글
Math 오브젝트 / String Object (0) | 2020.02.25 |
---|---|
Number 오브젝트 (0) | 2020.02.25 |
Object - function 작성, assign(), is() (0) | 2020.02.23 |
Destructuring Assignment (0) | 2020.02.20 |
Array Function (0) | 2020.02.20 |