Javascript에서 무엇이 상수이고 무엇이 상수가 아니다

7846 단어 es6javascript

소개하다.


지난 2년 동안 저는 자바스크립트로 코드를 작성하고 최신ECMAScript 표준을 사용했습니다. 이 표준은 모든 멋진 특성을 가지고 있습니다.그 중 하나는 상수를 정의할 수 있다는 것이다.다른 프로그래밍 언어는 이미 이 기능을 가지고 있다.Javascript에서는 ES6이 나타나고 const 키워드가 도입될 때까지 할 수 없습니다.
때때로, 내가 다른 개발자와 이야기를 할 때, 나는 상량에 대한 곤혹스러움을 볼 수 있다.어떤 사람들은 상수가 실제치보다 더 중요하다고 생각한다.나는 이 글을 써서 모두가 자바스크립트의 상수가 무엇인지 영원히 알 수 있도록 하기로 결정했다.만약 당신이 자바스크립트 코드를 작성하는 개발자라면, 당신은 정말 상수가 무엇인지 아십니까?예를 들어, 만약 대상이 상량으로 성명된다면, 당신은 그것이 단지 일반적인 변수처럼 같은 일을 할 수 있습니까?

Javascript의 상수는 무엇입니까?

const 키워드는 letvar 키워드처럼 값을 지정할 수 있습니다. (예전의 자바스크립트 시대를 기억하십니까?)그러나 일단 하나의 값을 지정하면 다른 값을 다시 지정할 수 없다.하면, 만약, 만약...
const a = 2;
그럼 너는 할 수 없어a = 3;.코드를 실행할 때 오류를 되돌려줍니다.
let 키워드에 대해서는 그렇지 않습니다.
하면, 만약, 만약...
let a = 2;
그리고 너는 할 수 있다.
a = 3;
아주 간단하죠?만약 당신이 이러한 고정된 특성을 가진 다른 프로그래밍 언어에 대해 경험이 있다면, 자바스크립트 ES6로 넘어가면, 이 점을 곧 알게 될 것이다.예를 들어, C++에는 const도 있습니다.자바에 있다final.그들은 모두 이렇게 한다!
비록 이 const 키워드는 매우 간단한 개념을 실현했지만, 때때로 약간의 혼동이 있을 수 있다.상수가 없는 프로그래밍 언어나 ES5 Javascript를 사용하여 코드를 작성하는 경우 var 키워드만 변수를 설명합니다.이것은 아마도 네가 처음으로 프로그래밍 언어에서 상수를 처리한 것일 것이다.일단 그것을 얻게 되면, 이렇게 간단한 기능이 얼마나 좋은지 깨닫게 될 것이다.오류가 발생하기 쉬운 코드를 작성할 수 있습니다.만약 텍스트 편집기에 자바스크립트 확장이 있다면, 코드를 실행하기 전에 텍스트 편집기에서 상수를 변경하려고 시도할 때 오류가 발생할 수도 있습니다.

뭐가 상수가 아니야?


이 점에서 너는 이 고정된 특징을 잘 알고 있을 거야, 그렇지?숫자, 브리 값, 문자열만 생각하면 그래야 한다.대상과 그룹을 사용하기 시작할 때 어떤 일이 일어날까요?이런 일을 하는 것은 무엇을 의미하는가?
const person = { firstName: 'Sheldon', lastName: 'Cooper' }
제가 뭘 할 수 있을까요person.age = 30?통상적인 상황에서, 우리는 일부 변하지 않는 것들은 영원히 변하지 않는다고 생각한다.만약 내가 개인 변수를 상수로 성명한다면, 나는 그것을 바꿀 수 있습니까?브라우저의 자바스크립트 콘솔에서 이 코드를 실행하려고 하면 오류가 발생하지 않습니다.
객체를 상수로 선언하고 해당 객체에 속성 추가
왜 이러지?왜냐하면...const 키워드는 같은 이름에 다른 값을 할당할 수 없음을 의미합니다.이것은 결코 이 값이 변하지 않는다는 것을 의미하지 않는다.
기본적으로 const 키워드는 하나의 규칙만 정의합니다.값을 한 번만 지정할 수 있습니다.var와 달리 letconst 키워드는 모두 블록 범위를 사용한다.이 키워드와 역할 영역 사이의 차이에 대해 더 알고 싶으시면 제 댓글을 보십시오
할당 값에서 변수의 왼쪽 (변수 이름) 에 가변 값이 있다면, 이 값은 여전히 가변적입니다.
당신은 할 수 있다.
const person = { firstName: 'Sheldon', lastName: 'Cooper };
person.age = 30;
너는 할 수 없다.
const person = { firstName: 'Sheldon', lastName: 'Cooper };
person = { firstName: 'Rajesh', lastName: 'Koothrappali' }
불변성이 가능한가요?const 키워드를 사용하기 때문에 값을 변경할 수 없다는 것은 아닙니다.배열의 요소와 객체의 속성을 항상 변경할 수 있습니다.
대상이나 그룹을 만들어서 변경할 수 있습니까?맞아요!
하지만 작은 디테일이 하나 있다.내가 너에게 예를 하나 들게.구조가 조금 다른 동일인 상수를 사용하자.
const person = { name: { first: 'Sheldon', last: 'Cooper'} };
개인 대상은name 속성이 있고 두 개의 속성 (first와last) 을 가진 대상입니다.Object.freeze 함수를 사용하여 이 사람을 변하지 않게 할 수 있습니다.
const person = Object.freeze({ name: { first: 'Sheldon', last: 'Cooper' } });
그리고name 속성을 변경하려고 시도하면 아무 일도 일어나지 않습니다. 개인 대상은 같은 값을 보존합니다.

그러나 아직 보호하기에는 부족할 수도 있다.name 속성도 두 개의 속성을 가진 대상이다.이 사람의 이름의 속성을 변경하려고 하면 어떤 상황이 발생합니까?

보시다시피 동결된 대상의 일부 속성을 변경할 수 있습니다.
진정한 불변성을 원한다면 Object.freeze 대상의 모든 속성을 귀속적으로 호출해야 한다.

결론


Javascript로 대량의 코드를 작성한 후, 나는 상수가 약간 혼란스럽다는 것을 발견했다.재분배할 수 없는 변수를 설명할 수 있는 기능은 이 언어의 첫 번째 버전의 일부분이 아니다.만약 상수의 프로그래밍 언어를 사용하여 프로그래밍을 한 경험이 있다면, 자바스크립트 프로그래밍을 시작하면 익숙해지기 쉽습니다.그러나 만약 당신이 이런 경험이 없다면, 그것은 좀 모호해질 수도 있다.
const 키워드를 사용하여 Javascript에서 상수를 선언할 수 있습니다. 예를 들어,
const person = { firstName: 'Sheldon', lastName: 'Cooper' };
이렇게 하면 동일한 블록의 동일한 이름에 대해 다른 값을 지정할 수 없습니다.그러나 값이 객체나 배열인 경우 상수가 변경되지 않기 때문에 속성을 변경할 수 있습니다.불변성이 필요하면 Object.freeze를 사용할 수 있다.단, 동결된 대상의 일부 속성도 대상이라면, 이 값을 변경할 수 있다는 것을 기억해야 합니다.
나는 네가 그것을 좋아하고 약간의 것을 배웠으면 한다.
즐거운 코딩!

좋은 웹페이지 즐겨찾기