Var, let 및 const의 차이점은 무엇입니까?

14452 단어 javasciptnewbiees6
ES2015(ES6)는 많은 반짝이는 새로운 기능을 가져왔고 2017년 이후 많은 자바스크립트 개발자들이 이 기능을 익히고 사용하기 시작했다.비록 이 가설은 정확할 수 있지만, 어떤 사람들에게는 그 중 일부 특징이 여전히 수수께끼일 수도 있다.
ES6에는 변수 선언에 사용할 수 있는 letconst 기능이 추가되었습니다.현재의 문제는 무엇이 우리가 사용하는 좋은olvar과 다르게 하는가?만약 네가 여전히 이 점을 잘 모른다면, 이 문장은 너에게 주는 것이다.
본고는 var,letconst의 범위, 용도와 조립에 대해 토론하고자 한다.네가 책을 읽을 때 내가 지적하고자 하는 그것들 사이의 차이에 주의해라.

변량


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 변수는 그 작용역의 맨 위로 올라가 정의되지 않은 값으로 초기화됩니다.
질문varvar 단점이 하나 있다.나는 아래의 예로 이 점을 설명할 것이다.
    var greeter = "hey hi";
    var times = 4;

    if (times > 3) {
        var greeter = "say Hello instead"; 
    }

    console.log(greeter) //"say Hello instead"
따라서 vartrue로 되돌아오기 때문에times > 3greeter로 재정의되었다.만약 당신이 다시 정의하고 싶다면 "say Hello instead", 이것은 문제가 아니지만, 이전에 정의된 변수 greeter 를 의식하지 못하면 문제가 됩니다.
코드의 다른 부분에서 greeter 을 사용했다면, 얻을 수 있는 출력에 놀랄 수도 있습니다.이것은 코드에 많은 오류를 초래할 수 있다.이것이 바로 greeterlet가 필요한 이유다.

양보하다

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 문제는 나타나지 않을 것이다.
크레인 varlet처럼 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.messageconst와 마찬가지로 let 성명은 정상으로 올라갔지만 초기화되지 않았다.
만일을 대비해서, 당신은 이러한 차이점을 놓쳤다. 그것들은 다음과 같다.
  • const성명은 전역작용역이나 함수작용역이고 varlet는 블록작용역이다.
  • const 변수는 그 범위 내에서 갱신하고 재성명할 수 있다.var 변수는 업데이트할 수 있으나 다시 설명할 수 없습니다.let 변수는 업데이트할 수도 없고 재성명할 수도 없다.
  • 그것들은 모두 그 작용역의 맨 위로 올라갔지만 const 변수는 var로 초기화되었고 undefinedlet 변수는 초기화되지 않았다.
  • constvar는 초기화하지 않은 상태에서 성명할 수 있지만let은 반드시 성명 기간에 초기화해야 한다.
  • 질문이나 보충이 있습니까?댓글 남겨주세요.
    감사합니다:)

    좋은 웹페이지 즐겨찾기