JavaScript Let
ECMAScript 2015
ECMAScript 2015은 두 가지 중요한 JavaScript 새로운 키워드를 도입했습니다:let
그리고 const
.
이 두 가지 키워드는 JavaScript에서 블록 범위를 제공합니다(Block Scope)변수(및 상수).
ES2015 이전에는 JavaScript는 두 가지 유형의 범위만 있었습니다:전역 범위그리고함수 범위.
전역 범위
전역(함수 외에서)선언된 변수는전역 범위.
예제
var carName = "porsche"; // 이 코드에서 carName를 사용할 수 있습니다 function myFunction() { // 이 코드에서도 carName를 사용할 수 있습니다 }
전역변수는 JavaScript 프로그램의 어디서든 접근할 수 있습니다.
함수 범위
지역(함수 내에서)선언된 변수는함수 범위.
예제
// 이 코드에서 carName를 사용할 수 없습니다 function myFunction() { var carName = "porsche"; // 여기서 code를 사용할 수 있습니다 carName } // 이 코드에서 carName를 사용할 수 없습니다
지역변수는 선언된 함수 내에서만 접근할 수 있습니다.
JavaScript 블록 범위
을 통해 var
키워드 선언된 변수는 블록이 없습니다범위.
블록 {} 블록 내 선언된 변수는 블록 외에서 접근할 수 있습니다.
예제
{ var x = 10; } // 여기서 x를 사용할 수 있습니다
ES2015 이전에는 JavaScript는 블록 범위가 없었습니다.
사용할 수 있습니다 let
키워드 선언은 블록 범위의 변수를 가집니다.
블록 {} 블록 내 선언된 변수는 블록 외에서 접근할 수 없습니다:
예제
{ let x = 10; } // 여기서 x를 사용할 수 없습니다
변수를 다시 선언
사용 var
키워드를 다시 선언하면 문제가 발생합니다.
블록 내에서 변수를 다시 선언하면 블록 외의 변수도 다시 선언됩니다:
예제
var x = 10; // 여기서 x는 10입니다 { var x = 6; // 여기서 x는 6입니다 } // 여기서 x는 6입니다
사용 let
키워드를 다시 선언하면 이 문제를 해결할 수 있습니다.
블록 내에서 변수를 다시 선언하면 블록 외의 변수는 다시 선언되지 않습니다:
예제
var x = 10; // 여기서 x는 10입니다 { let x = 6; // 여기서 x는 6입니다 } // 여기서 x는 10입니다
브라우저 지원
Internet Explorer 11 또는 이전 버전은 부분적으로 지원하지 않습니다. let
키워드를 정의합니다.
다음 표는 첫 번째 완전히 지원하는 let
키워드의 브라우저 버전:
Chrome 49 | IE / 엣지 12 | 파이어폭스 44 | 사파리 11 | 오페라 36 |
2016년 3월 | 2015년 7월 | 2015년 1월 | 2017년 9월 | 2016년 3월 |
루프 범위
루프에서 사용 var
:
예제
var i = 7; for (var i = 0; i < 10; i++) { // 일부 문장 } // 여기서, i는 10입니다
루프에서 사용 let
:
예제
let i = 7; for (let i = 0; i < 10; i++) { // 일부 문장 } // 여기서 i는 7입니다
첫 번째 예제에서, 루프에서 사용하는 변수는 var
루프 외의 변수를 다시 선언합니다.
두 번째 예제에서, 루프에서 사용하는 변수는 let
루프 외의 변수를 다시 선언하지 않습니다.
루프에서 let
변수 i를 선언하면, 그 변수 i는 루프 내에서만 보이게 됩니다.
함수 범위
함수 내에서 변수를 선언할 때 사용 var
그리고 let
매우 유사합니다.
그들은 모두함수 범위:
function myFunction() { var carName = "porsche"; // 함수 범위 } function myFunction() { let carName = "porsche"; // 함수 범위 }
전역 범위
또는 블록 외에서 선언된 경우 var
그리고 let
매우 유사합니다.
그들은 모두전역 범위:
var x = 10; // 전역 범위 let y = 6; // 전역 범위
HTML의 전역 변수
JavaScript를 사용하는 경우 전역 범위는 JavaScript 환경입니다.
HTML에서 전역 범위는 window 객체입니다.
을 통해 var
키워드로 정의된 전역 변수는 window 객체에 속합니다:
예제
var carName = "porsche"; // 이 코드는 window.carName를 사용할 수 있습니다
을 통해 let
키워드로 정의된 전역 변수는 window 객체에 속하지 않습니다:
예제
let carName = "porsche"; // 이 코드는 window.carName를 사용할 수 없습니다
재선언
프로그램의 어느 위치에서든 사용할 수 있습니다 var
JavaScript 변수 재선언:
예제
var x = 10; // 지금, x는 10입니다 var x = 6; // 지금, x는 6입니다
동일한 범위或在 동일한 블록에서 let
다시 선언 var
변수는 불허됩니다:
예제
var x = 10; // 허용 let x = 6; // 불가 { var x = 10; // 허용 let x = 6; // 불가 }
동일한 범위或在 동일한 블록에서 let
다시 선언 let
변수는 불허됩니다:
예제
let x = 10; // 허용 let x = 6; // 불가 { let x = 10; // 허용 let x = 6; // 불가 }
동일한 범위或在 동일한 블록에서 var
다시 선언 let
변수는 불허됩니다:
예제
let x = 10; // 허용 var x = 6; // 불허 { let x = 10; // 허용 var x = 6; // 불허 }
다른 범위나 블록에서 let
변수를 다시 선언하는 것은 허용됩니다:
예제
let x = 6; // 허용 { let x = 7; // 허용 } { let x = 8; // 허용 }
키오스팅
을 통해 var
선언된 변수는키오스팅톱으로. 키오스팅(Hoisting)이 무엇인지 모르신다면, 우리의 키오스팅 장을 공부하세요.
변수를 선언하기 전에 사용할 수 있습니다:
예제
// 여기서는 carName을 사용할 수 있습니다 var carName;
을 통해 let
정의된 변수는 톱으로 提升되지 않습니다.
선언할 때 let
변수를 사용하기 전에 선언하지 않으면 ReferenceError가 발생합니다.
변수는 블록의 시작에서부터 선언까지 '임시 사망 区'에 있습니다:
예제
// 여기서는 carName을 사용할 수 없습니다 let carName;