,let,const - 뭐가 달라요?
var
로 완성되었다.ES6의 발표에 따라 우리는 두 가지 변수 성명 옵션을 얻었다. let
와 const
.새 키워드를 도입한 후 JavaScript를 배우기 시작했습니다.학습 자료에서 변수 성명의 주제를 언급할 때 대부분의 참고 자료는 var
를 언급한다. 왜냐하면 오래된 코드를 사용할 때 식별해야 하기 때문이다.그들은 let
와 const
가 var
를 사용할 때의 문제점을 해결하고 var
가 아닌 그것을 사용하는 것을 더 좋아한다고 설명하고 인코딩을 계속했다.대부분의 학습 자료에 대해 말하자면, 이것은 거의 너로 하여금 진도를 따라잡고 프로젝트에 참여하게 할 수 있지만, 나는 이러한 서로 다른 키워드의 존재를 이해하는 것이 매우 중요하다고 생각한다.많은 JavaScript 인터뷰에는 키워드에 대한 질문이 포함되어 있는데, 나는 개인적으로 서로 다른 키워드로 성명한 변수를 사용하면 어떤 상황이 발생할지 설명해야 하기 때문에 당황스러웠다.더 중요한 것은 코드 라이브러리를 처리할 때 변수가 무슨 일이 일어날지 이해하는 것이 중요하다는 것이다.
범위
변수 성명을 토론할 때 이해해야 할 중요한 개념은 범위다.코드에 명시된 모든 변수는 하나의 작용역을 가지고 있다.사실 서로 다른 키워드를 사용하여 변수 간의 주요 차이점 중 하나가 바로 그것이다.이것이 무엇을 의미하는지 이해하는 데 시간이 좀 걸립시다.
범위는 MDN 웹 문서에 따라 다음과 같이 정의됩니다.
The current context of execution. The context in which values and expressions are "visible" or can be referenced. If a variable or other expression is not "in the current scope," then it is unavailable for use. Scopes can also be layered in a hierarchy, so that child scopes have access to parent scopes, but not vice versa.
본질적으로, 이것은 변수의 작용역이 코드에서 그것을 사용할 수 있는 곳이라는 것을 의미한다.그것들은 내부 함수에서 전역 변수에 접근할 수 있지만 반대로 접근할 수 없는 차원 구조를 가지고 있다.그렇다면 변수 범위가 성명 간의 주요 차이라면 무엇을 의미하는가?어디 보자.
범위 내 var
var
성명의 작용역은 전역적일 수도 있고 기능적/국부적일 수도 있다.함수 외부에 정의된 변수는 프로그램의 모든 위치에서 사용할 수 있고 함수 내부에 정의된 변수는 이 함수에서만 사용할 수 있습니다.var
의 또 다른 속성은 그것으로 성명할 수 있는 변수를 다시 성명하고 업데이트하는 것이다.다음 코드를 보세요.
// this code
var name = "AJ";
var name = "Susan";
// is the same as
var name = "AJ";
name = "Susan";
위에서 말한 바와 같이 var
를 사용하여 변수는 업데이트 값과 기본적으로 같다.같은 범위 내에서 일할 때, 이것은 매우 효과적이지만, 만약 우리가 부주의로 이름이 이미 다른 곳에서 사용된 변수를 성명하려고 시도한다면, 문제가 발생할 수 있습니다.다른 예를 보십시오.
var message = "Hello!"
var count = 5;
if (count > 0) {
var message = "Hola"
}
console.log(message) // "Hola"
if
블록에서 count
가 0보다 크면 메시지 변수를 만들 것입니다.잠깐만, 우리가 message
이미 다른 곳에서 사용되었다는 것을 의식하지 못한 것 같아서, 우리는 의외로 필요한 변수의 값을 업데이트했다.let
나 const
를 사용할 때 어떤 일이 일어나는지 봅시다.let과const 분해
var
와 let
는 모두 블록 범위이다.괄호로 묶인 모든 코드는 블록이다.이것은 우리가 const
또는 let
로 변수를 성명할 때, 그 중의 어떤 괄호도 그 안에 성명하는 것을 의미한다.또한 사용const
성명의 변수는 업데이트만 가능하며 사용let
처럼 재정의할 수 없습니다.var
변수는 처음 성명한 후에 변경할 수 없습니다.(대상에게 작은 예외가 하나 있다)const
를 사용하여 코드를 다시 살펴보겠습니다.
let message = "Hello!"
let count = 5;
if (count > 0) {
let message = "Hola"
}
console.log(message) // "Hello"
우리의 let
문장은 그 자체의 블록이기 때문에 우리는 새로운 변수를 성명할 수 있다. 그 작용역은 if
문장이고, 그 외에 성명한 변수를 방해하지 않는다.if
를 사용하면 기존 변수를 재성명하는 것을 걱정할 필요가 없다.사실 우리가 같은 범위 내에서 의외로 이렇게 하더라도, 우리는 우리의 변수가 이미 성명되었다는 잘못을 얻게 될 것이다.조립 정보
let
,var
와let
를 비교할 때 내가 가장 언급하고 싶지 않은 것은 승진이다.익숙하지 않은 경우 향상은 JavaScript가 코드에서 선언을 수집하고 코드를 실행하기 전에 해당 역할 영역의 상단으로 가져오는 프로세스입니다.너는 내가 말한 범위에 주의했니?변수가 그 작용역의 꼭대기까지 올라갔기 때문에 const
,var
와let
성명된 변수의 상승 방식이 다르다.const
로 성명한 변수는 그 작용역의 맨 위로 올라가 초기값var
을 제시한다.코드에서 변수를 정의하기 전에 이 변수를 사용하려고 시도하면 값이 undefined
인 변수가 사용됩니다.undefined
와 달리 JavaScript는 var
로 선언된 변수의 값을 초기화하지 않습니다.let
변수가 상승하면 설명만 됩니다. 초기화하기 전에 사용하면 let
하나를 얻을 수 있습니다.Reference error
변수는 const
로 성명한 변수와 거의 같지만 그들 사이의 미세한 차이는 다시 성명하거나 갱신할 수 없다.객체의 등록 정보를 수정할 수 있지만 대입 연산자를 사용하여 객체의 객체를 직접 업데이트할 수 없는 경우에는 예외가 있습니다.변경할 수 없기 때문에 let
변수는 성명할 때 초기화해야 합니다.이렇게 해시태그.
이것이 전부입니다. 이제 변수 키워드의 주요 차이에 대해 더 깊이 이해하게 되었습니다.나는 이것이 너에게 도움이 되기를 바란다.
만약 당신이 이 글을 좋아한다면, 언제든지 나의 다른 곳을 주목해 주십시오. Github 또는.즐거운 코딩!
Reference
이 문제에 관하여(,let,const - 뭐가 달라요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kjdowns/var-let-and-const-what-s-the-difference-31om텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)