자바스크립트에서 "const"변수 이해하기

지금까지 ES6(ES2015)는 많은 개발자들이 이 현대적인 구문으로 JavaScript를 작성하고 있을 정도로 널리 보급되었습니다. 그러나 일반적으로 변수 선언에 개선의 여지가 있다고 생각합니다. 특히, 업데이트되었지만 새 값을 재할당하지 않은 개체를 선언하는 let가 표시되는 경우입니다.

문제가 되는 예는 다음과 같습니다.

let cache = {};

cache.id = 'hello';

// We never reassign cache to a different value.
// It's a reference to the same object.

예, const 변수는 절대 재할당되지 않기 때문에 실제로는 cache가 될 수 있습니다.

불변성 대 재할당



많은 사람들이 const 선언을 "불변"변수 생성으로 참조합니다. 불변이란 값(객체의 속성 포함)이 절대 업데이트될 수 없음을 의미합니다.

그렇다면 a const를 사용하여 초기 예제를 시도해 보겠습니다.

const cache = {};

cache.id = 'hello';

console.log(cache.id); // will output "hello"
cache가 이제 변경할 수 없는 상수인 경우 id 속성을 추가하려고 하면 작동하지 않거나 오류가 발생합니다.

그러나 해당 예제를 실행하면 완벽하게 작동합니다. 업데이트된 개체에서 검색된 문자열 "hello"가 기록됩니다.

자, 그렇다면 const가 무언가를 불변으로 선언하지 않으면 어떻게 됩니까? 음, const는 변수가 새 값으로 재할당되는 것을 방지합니다.

다음은 변수를 재할당하는 몇 가지 예입니다.

let cache = {};

cache = { id: 'hello' }; // reassigning variable to a new object

let isSuccess = false;

isSuccess = true; // reassigning variable to false boolean

위의 let 문을 const로 변경하면 대신 "Uncaught TypeError: Assignment to constant variable"유형 오류가 발생합니다.

개체에 대한 속성을 설정하거나 기존 속성을 업데이트하는 것은 재할당이 아닙니다. 변수 값은 여전히 ​​동일한 개체이며 해당 개체의 속성을 업데이트하고 있습니다.

const 사용의 이점



이제 constlet 가 어떻게 다른지 이해하셨기를 바랍니다. 하지만 여전히 한 가지 중요한 질문이 있을 수 있습니다.

주로 코드의 품질과 귀하 또는 다른 개발자가 코드에서 추론할 수 있는 정보의 양에 달려 있습니다. 예를 들어, 코드베이스에서 한 파일을 살펴보면 다음과 같이 표시됩니다.

let isSuccess = true;

좋아요, 어떤 작업이 성공했는지 여부를 선언하는 변수입니다. 이 경우 값은 const 입니다. 그러나 true는 또한 이 변수가 나중에 해당 파일의 어디에서나 let에 재할당될 수 있음을 알려줍니다.

다시 확인하기 위해 파일에서 false의 모든 인스턴스를 검색합니다. 음, 어디에도 재할당된 것이 아니므로 이 변수의 값은 그대로 유지되는 것으로 알고 있습니다isSuccess .

내게는 상수처럼 들립니다. 이 변수가 실제로 true로 선언된 경우 파일에서 다른 곳을 검색할 필요가 없습니다.

이제 몇 달 후에 이 코드를 다시 방문한다고 상상해 보십시오. 파일 아래에 다음을 추가합니다.

isSuccess = false;

어, 당신이 처음에 const 에 대한 이 코드를 isSuccess 로 작성했을 때 나중에 누군가가 코드를 변경할 것이라고 기대하지 않았기 때문에 지금 잠재적으로 버그를 일으켰습니다. 짝수your future self .

이것은 특히 여러 개발자가 있는 대규모 코드베이스에서 매우 일반적인 시나리오입니다. 가장 큰 부분은 trueconst를 적절하게 사용하면 쉽게 해결할 수 있다는 것입니다.

기본값은 let 이지만 필요한 경우 const 사용



일반적으로 let 를 사용하여 모든 새 변수를 선언하고 해당 변수 중 하나를 재할당해야 하는 지점을 발견하면 const 로 변경하는 것이 좋습니다.

다음은 둘 다 적절하게 사용하는 방법에 대한 훨씬 더 큰 예입니다.

const cache = {};
let user = {};
let isSuccess = false;

// The `cache` variable is never reassigned a new value.
cache.greeting = `Hello`;

// The `user` variable is not reassigned a new value right now.
user.id = 1;

// Here, we assign `user` and `isSuccess` new values.
user = {};
isSuccess = true;
letconst 대신 var 를 사용하여 변수를 선언하는 것은 확실히 패러다임 전환이지만 코드에 더 많은 신뢰를 더할 수 있습니다. 그것을 시도하고 당신이 어떻게 생각하는지 알려주세요.

코드를 더욱 개선하는 방법을 배우고 싶습니까? 내 Writing code for your future self 기사를 좋아할 것입니다.


좋은 웹페이지 즐겨찾기