👋 let 변수 개요, let 변수 선언, 블록 스코프
1) let 변수 개요
let sports = '축구';
if (sports) {
let sports = '농구';
console.log('안:', sports);
}
console.log('밖:', sports);
// 안: 농구
// 밖: 축구-
let book = "책";- 블록 스코프를 가진 변수
- 변수가 선언된 블록이 스코프
-
스코프 적용 기준
- 블록
{}, 문, 표현시
- 블록
-
블록
{}안과 밖이 스코프가 다름- 변수 이름이 같아도 값이 대체되지 않음
2) let 변수 선언
-
Syntax
let name1 [= value1] [, name2 [= value2]]
-
name1,name2에 변수 이름 작성- 식별자로 사용
[ ]는 생략 가능을 나타냄- 값을 할당하지 않아도 됨
let book; let one, two;let book;- 값을 할당하지 않고 변수만 선언할 수 있음, 초깃값
undefined가 할당됨 let one, two;- 콤마로 구분하여 다수를 선언할 수 있음
-
value1,value2에 초깃값 작성- 표현식 작성 가능, 평가 결과 사용
let book = '책'; let one = 1, two = 10 + 20; // let five = 5, let six = 6; // let five = 5, var six = 6;let book = "책";- 변수를 선언하고 초깃값을 할당했습니다.
let one = 1, two = (10 + 20);- 콤마로 구분하여 다수의 변수를 선언하고 값을 할당한 형태임
let five = 5, let six = 6;SyntaxError발생,let을 처음에 한 번만 작성함let five = 5, var six = 6;- 콤마로 구분하여 let과 var을 같이 사용할 수 없음
3) 블록 스코프
-
블록 기준
- 중괄호
{ 코드 } function name() { 코드 }if (a === 1) { 코드 }
- 중괄호
-
블록 안과 밖이 스코프가 다름
- 변수 이름이 같아도 값이 대체되지 않음
// 블록 스코프 let sports = '축구'; if (sports) { let sports = '농구'; console.log('안:', sports); } console.log('밖:', sports);if (sports) {...}블록{}안과 밖에let sports를 작성했으며 스코프가 다르므로 같은 이름을 사용할 수 있음- 변숫값이 대체되지 않고 유지 됨
- 블록 안에서 블록 밖의 변수는 접근 할수 있지만(
if문 안의sports의let를 빼면 밖의sports에 접근) - 블록 밖에서 블록 안의 변수는 접근 할수 없음
let sports = '축구'; sports = '농구'; console.log(sports); // 농구 // let sports = "배구"; { let sports = '탁구'; console.log(sports); }sports = "농구";스코프에서sports식별자를 해결함, 바로 앞에 있으므로 값을 할당// let sports = "배구";let을 사용하여 같은 스코프에 같은 이름의 변수를 선언할 수 없음{ let sports ="탁구"; }블록{}을 사용했으므로 스코프가 다르므로let을 사용하여 변수를 선언할 수 있음
- 스코프에 같은 이름 사용 불가