Var, let 및 const의 차이점은 무엇입니까?
ES6에는 변수 선언에 사용할 수 있는
let
및 const
기능이 추가되었습니다.현재의 문제는 무엇이 우리가 사용하는 좋은olvar
과 다르게 하는가?만약 네가 여전히 이 점을 잘 모른다면, 이 문장은 너에게 주는 것이다.본고는
var
,let
와const
의 범위, 용도와 조립에 대해 토론하고자 한다.네가 책을 읽을 때 내가 지적하고자 하는 그것들 사이의 차이에 주의해라.변량
ES6가 등장하기 전
var
국왕으로서 통치하겠다고 선언했다.그러나 var
성명을 사용하는 변수에도 문제가 있다.이것이 바로 왜 새로운 방법으로 변수를 성명할 필요가 있는가 하는 것이다.단, 우선 이런 문제를 토론하기 전에 var
에 대해 더 알아보자.범위
var
범위는 본질적으로 이 변수들이 사용할 수 있는 곳을 가리킨다.var
성명은 전역 범위의 또는 함수/국부 범위의 것이다.var
변수가 함수 외부에서 성명될 때 전역 작용역입니다.이것은 함수 블록의 외용 var
에서 성명한 모든 변수를 전체 창에서 사용할 수 있음을 의미한다.var
함수에서 성명할 때 함수 작용역이다.이것은 그것이 사용할 수 있고 이 기능에서만 접근할 수 있다는 것을 의미한다.한층 더 이해하려면 아래의 예시를 보십시오.
var greeter = "hey hi";
function newFunction() {
var hello = "hello";
}
여기greeter
는 전역 범위이다. 함수 외에 존재하기 때문이고hello
는 함수 범위이다.그래서 우리는 함수 밖에서 변수hello
에 접근할 수 없다.그래서 만약 우리가 이렇게 한다면: var tester = "hey hi";
function newFunction() {
var hello = "hello";
}
console.log(hello); // error: hello is not defined
함수 외부에서 사용할 수 없기 때문에 오류가 발생할 것입니다.hello
변수를 재선언하고 업데이트할 수 있음이것은 우리가 같은 범위 내에서 이 조작을 실행할 수 있고 오류가 발생하지 않는다는 것을 의미한다.
var greeter = "hey hi";
var greeter = "say Hello instead";
이것 또한 var greeter = "hey hi";
greeter = "say Hello instead";
크레인 var
향상은 코드가 실행되기 전에 변수 및 함수 선언이 역할 영역의 맨 위로 이동하는 JavaScript 메커니즘입니다.이것은 만약 우리가 이렇게 한다면 console.log (greeter);
var greeter = "say hello"
그것은 해석된다 var greeter;
console.log(greeter); //greeter is undefined
greeter = "say hello"
그래서 var
변수는 그 작용역의 맨 위로 올라가 정의되지 않은 값으로 초기화됩니다.질문
var
var
단점이 하나 있다.나는 아래의 예로 이 점을 설명할 것이다. var greeter = "hey hi";
var times = 4;
if (times > 3) {
var greeter = "say Hello instead";
}
console.log(greeter) //"say Hello instead"
따라서 var
true로 되돌아오기 때문에times > 3
는 greeter
로 재정의되었다.만약 당신이 다시 정의하고 싶다면 "say Hello instead"
, 이것은 문제가 아니지만, 이전에 정의된 변수 greeter
를 의식하지 못하면 문제가 됩니다.코드의 다른 부분에서
greeter
을 사용했다면, 얻을 수 있는 출력에 놀랄 수도 있습니다.이것은 코드에 많은 오류를 초래할 수 있다.이것이 바로 greeter
와let
가 필요한 이유다.양보하다
const
는 현재 변수 성명의 첫 번째 선택이다.이것은 let
성명에 대한 개선이기 때문에 이상하지 않다.그것은 또한 이전 부제에서 제기한 이 문제를 해결했다.왜 이러는지 생각해 봅시다.var
블록 범위블록은 {}을 경계로 하는 코드 블록입니다.한 동네는 괄호 안에 산다.괄호 안의 모든 물건은 블록이다.따라서 블록에 명시된 변수
let
는 이 블록에서만 사용할 수 있다.나는 하나의 예로 이 점을 해석할 것이다. let greeting = "say Hi";
let times = 4;
if (times > 3) {
let hello = "say Hello instead";
console.log(hello);//"say Hello instead"
}
console.log(hello) // hello is not defined
블록 (큰 괄호를 정의하는 것) 외에 let
을 사용하면 오류가 되돌아오는 것을 보았습니다.이것은 hello
변수가 블록 범위이기 때문이다.let
업데이트는 가능하지만 재선언할 수 없습니다.let
와 마찬가지로 var
로 성명한 변수는 그 범위 내에서 업데이트할 수 있다.let
와 달리 var
변수는 그 작용역에서 재성명할 수 없다.그래서 효과가 있겠지만, let greeting = "say Hi";
greeting = "say Hello instead";
이것은 오류를 되돌려줍니다. let greeting = "say Hi";
let greeting = "say Hello instead";//error: Identifier 'greeting' has already been declared
그러나 다른 범위 내에서 같은 변수를 정의하면 오류가 발생하지 않는다. let greeting = "say Hi";
if (true) {
let greeting = "say Hello instead";
console.log(greeting);//"say Hello instead"
}
console.log(greeting);//"say Hi"
왜 잘못이 없어요?이것은 두 실례가 서로 다른 변수로 간주되기 때문에 서로 다른 작용역을 가지고 있기 때문이다.이 사실은
let
보다 let
더 좋은 선택이 되었다.var
를 사용할 때 이전에 변수의 이름을 사용한 적이 있다면 변수는 그 작용역 내에만 존재하기 때문에 신경 쓸 필요가 없다.또한 변수는 한 범위 내에서 여러 번 성명할 수 없기 때문에 앞에서 논의한 let
문제는 나타나지 않을 것이다.크레인
var
let
처럼 var
성명도 정상으로 올랐다.let
로 초기화된 var
와는 달리 undefined
키워드는 초기화되지 않았습니다.따라서 성명 전에 let
변수를 사용하려고 시도하면 let
를 받게 된다.콘스트
Reference Error
에 명시된 변수로 상수 값을 유지합니다.const
성명과 const
성명은 약간의 비슷한 점이 있다.let
블록 범위 선언const
성명과 마찬가지로 let
성명은 성명된 블록 내에서만 방문할 수 있다.const
업데이트 또는 재선언 불가이것은
const
로 성명한 변수의 값이 그 범위 내에서 변하지 않는다는 것을 의미한다.업데이트하거나 재성명할 수 없습니다.그래서 만약 우리가 const
로 변수를 성명한다면 우리도 이렇게 할 수 없다 const greeting = "say Hi";
greeting = "say Hello instead";//error : Assignment to constant variable.
이것도 아니야. const greeting = "say Hi";
const greeting = "say Hello instead";//error : Identifier 'greeting' has already been declared
따라서 모든 const 성명은 성명할 때 초기화해야 합니다.사용
const
성명의 대상에 대해 이런 행위는 어느 정도 다르다.객체const
는 업데이트할 수 없지만 객체의 등록 정보는 업데이트할 수 있습니다.따라서 Dell이 const
객체를 const greeting = {
message : "say Hi",
times : 4
}
저희가 이렇게 할 수는 없지만. const greeting = {
words : "Hello",
number : "five"
}//error : Assignment to constant variable.
우리 할 수 있어. greeting.message = "say Hello instead";
오류를 반환하지 않고 값const
이 업데이트됩니다.크레인
greeting.message
const
와 마찬가지로 let
성명은 정상으로 올라갔지만 초기화되지 않았다.만일을 대비해서, 당신은 이러한 차이점을 놓쳤다. 그것들은 다음과 같다.
const
성명은 전역작용역이나 함수작용역이고 var
와let
는 블록작용역이다.const
변수는 그 범위 내에서 갱신하고 재성명할 수 있다.var
변수는 업데이트할 수 있으나 다시 설명할 수 없습니다.let
변수는 업데이트할 수도 없고 재성명할 수도 없다.const
변수는 var
로 초기화되었고 undefined
와 let
변수는 초기화되지 않았다.const
와 var
는 초기화하지 않은 상태에서 성명할 수 있지만let
은 반드시 성명 기간에 초기화해야 한다.감사합니다:)
Reference
이 문제에 관하여(Var, let 및 const의 차이점은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sarah_chima/var-let-and-const--whats-the-difference-69e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)