자바 스 크 립 트 변수 선언 var let const
var 와 let, const 의 주요 차 이 는 역할 영역 에 있다.
역할 영역 (범위)
변 수 는 범위 의 정 의 를 사용 할 수 있 습 니 다. 이 범 위 를 넘 으 면 사용 할 수 없습니다.
var
역할 영역: 함수 (함수)
예 를 들 면:
function test() {
var x = 10;
}
console.log(x); // :Uncaught ReferenceError: x is not defined
그러나 다음 과 같은 상황 이 라면:
if (true) {
var x = 10;
}
console.log(x); // 10
console. log (x) 는 변수 x 가 function 에 존재 하지 않 기 때 문 이 라 고 표시 할 수 있 습 니 다.
let
역할 영역: block (블록)
if (true) {
let x = 10;
}
console.log(x); // :Uncaught ReferenceError: x is not defined
let 를 사용 하면 변수의 역할 영역 을 대괄호 (블록) 로 제한 할 수 있 습 니 다!
또한, var 를 사용 하면 이른바 '네 임 스페이스 오염' 을 초래 하기 쉬 우 며, 부주의 로 이미 사용 하고 있 는 변수 이름 을 바 꾸 어 코드 운행 과 유지 에 문제 가 생 겼 으 며, let 는 상대 적 으로 많이 사용 되 었 다.
예 를 들 면:
let x = 1; // : ( )
if (true) {
let x = 2; // :
console.log(x); // 2
}
console.log(x); // 1
이 두 x 는 완전히 다른 변수 로 여 겨 집 니 다. 블록 밖의 x 값 은 블록 내 x 의 값 에 영향 을 주지 않 기 때문에 네 임 스페이스 오염 문제 가 없 을 것 입 니 다. let 를 var 로 바 꾸 면 두 출력 은 모두 2 가 될 것 입 니 다!
const
역할 영역: block (블록)
const 의 역할 영역 은 let 와 같 습 니 다. const 의 글자 적 의미 와 같이 상수 (constant) 를 선언 하 는 데 사 용 됩 니 다. let 와 달리 변수 (variable) 를 선언 하 는 데 사 용 됩 니 다.
const x = 10;
x = 20; // :Uncaught TypeError: Assignment to constant variable.
const 가 선언 한 변 수 를 수정 하면 오류 메시지 가 발생 합 니 다!
주의해 야 할 것 은 const 가 Object 를 선언 하면:
const dog = {
name: 'pipi',
color: 'yellow'
}
dog.name = 'lucky';
console.log(dog); // Object {name: "lucky", color: "yellow"}
이때 도 수정 할 수 있 습 니 다. 이 Object 가 수정 되 는 것 을 금지 하려 면
Object.freeze()
이 방법 을 사용 해 야 합 니 다.const dog = {
name: 'pipi',
color: 'yellow'
}
const myDog = Object.freeze(dog);
myDog.name = 'lucky'
console.log(myDog); // Object {name: "pipi", color: "yellow"}
비록 우리 가 myDog 의 속성 을 수 정 했 지만, 이 때 는 원래 의 값 에 영향 을 주지 않 습 니 다!
전역 변 수 를 사용 하고 수정 하 는 것 은 매우 위험 합 니 다. let 와 const 를 잘 사용 하면 블록 안에 속 해 야 하 는 변수 가 블록 밖 (전역) 변 수 를 덮어 쓰 는 것 을 피 할 수 있 고 블록 내 에서 블록 밖 (전역) 에 속 하 는 변 수 를 실수 로 수정 하 는 것 도 피 할 수 있 습 니 다.
let 와 const 를 많이 사용 하 는 것 을 권장 합 니 다. var 는 전체 시스템 에서 여러 역할 영역 이 액세스 되 어야 하 는 상황 에서 사용 할 수 있 습 니 다.
엄 밀 히 말 하면 var 는 전역 변 수 를 정의 하 는 것 이 아니 라 가끔 선언 하 는 위치 가 전역 적 인 효 과 를 가 질 수 있 습 니 다.
ES6 이후 버 전도 더 이상 var 를 사용 하지 말고 let 로 바 꾸 는 것 을 권장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.