Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 기본 값을 변경할 수 없다는 것은 무엇을 의미합니까?

JavaScript에서는 기본 값이 불변하는 비기본 값과 달리 변경할 수 없다는 말을 자주 듣게 됩니다. 변하기 쉬운. 이러한 값 유형(데이터 유형이라고도 함) 간의 차이점을 이해하는 것이 중요합니다. ) 이는 앞으로의 골치 아픈 일을 많이 줄여줄 것이기 때문입니다.

기본 값은 다음과 같습니다.

  • 숫자
  • 문자열
  • 부울

기본이 아닌 값은 다음과 같습니다.

  • 개체
  • 기능

변경 가능은 할 수 있음을 의미합니다. 변경됩니다.

변경할 수 없음은 할 수 없음을 의미합니다. 변경됩니다.

기본이 아닌 값은 변경 가능

다음은 변수에 할당된 사람들의 목록(배열)입니다.

let peopleList = ['Arnold', 'Linda', 'Sylvester', 'Dolph']

이제 변이하고 싶습니다. 나의 목록. 돌연변이는 단순히 변경을 의미합니다. Arnold를 Jean-Claude로 바꾸고 결과를 인쇄하고 싶습니다.

let peopleList = ['Arnold', 'Linda', 'Sylvester', 'Dolph']

peopleList[0] = 'Jean-Claude'

console.log(peopleList)

효과가 있었다! 우리는 기존 값에 돌연변이를 만들었습니다. 이 경우 기존 값은 배열(목록)이거나 보다 구체적으로 배열 개체였습니다. .

JavaScript에서 기본이 아닌 값은 변경 가능(변경 가능)합니다.

기본 값은 변경할 수 없습니다.

다음은 변수에 할당되는 텍스트(문자열) 값입니다.

let person = 'Ernold'

젠장, 불행히도 우리는 Arnold의 이름의 첫 글자에 A 대신 E를 사용하여 철자를 잘못 썼습니다. 빠르게 변경하고 결과를 인쇄해 보겠습니다.

let person = 'Ernold'

person[0] = 'A' 

console.log(person) // output: Ernold

무엇을 기다립니다? "Ernold"라고 인쇄되는 이유는 무엇입니까? E를 A로 바꾸지 않았습니까!?

아니요, 변경하려는 값이 문자열이기 때문에 이는 기본값입니다. — 모든 기본 값은 변경할 수 없습니다(변경 불가능).

기본이 아닌 값(객체 및 함수)만 변경할 수 있습니다.

혼란스럽습니까?

표면적으로 위의 예가 일부에서 유사하게 보이고 심지어 동작하기 때문에 JavaScript 학습 여정을 시작할 때 이 항목에 대해 혼동하는 것은 완전히 정상입니다. 상황.

배열에서 이름을 출력해 보겠습니다. 이전:

let peopleList = ['Arnold', 'Linda', 'Sylvester', 'Dolph']

console.log(peopleList[0]) // output: "Arnold"

놀라지 마세요. "Arnold"가 출력됩니다. .

이제 문자열의 첫 글자를 출력해 보겠습니다. 이전(철자가 잘못된 이름):

let person = 'Ernold'

console.log(person[0]) // output: ??

무슨 일이 일어날 것 같아?

...

...

효과가 있었다! "E"를 출력합니다. !

위의 작업이 작동하지 않을 것으로 예상했습니까?

어느 쪽이든 여기에서 중요한 교훈은 다음과 같이 액세스할 수 있다는 것입니다. 기본이 아닌 값에 액세스하는 방법과 유사한 방식으로 기본 값을 변경할 수 있지만 변경할 수는 없습니다. 이것이 큰 차이점입니다(접근 대 돌연변이).

JavaScript에서 기본 값은 읽기 전용입니다. 기본이 아닌 값(객체/배열, 함수)은 모두 읽기 및 쓰기입니다.

이것이 Arnold에서 배열의 첫 번째 항목 값을 변경(변경)할 수 있는 이유입니다. Jean-Claude에게 이전이지만 "Ernold"의 간단한 철자 오류는 수정할 수 없습니다. "Arnold"로 — 문자열이고 문자열/기본값은 변경할 수 없기 때문입니다.

변수 대 값

(어떤 생각을 하시는지 압니다)

기본 값은 변경할 수 없다는 결론을 내렸지만 여전히 "Ernold"의 철자 오류를 수정하기로 결정했습니다. 새로운 것을 시도해보자!

다음 코드를 살펴보십시오(주의 깊게 읽으십시오).

let person = 'Ernold'

person = 'Arnold'

console.log(person) // output: ??

문자열과 같은 기본 값에 대해 배운 것을 고려할 때 위의 내용이 Arnold를 출력할 것이라고 생각하십니까? , 예 혹은 아니오?

...

(생각해봐)

...

Arnold를 출력합니다. !

이미 알고 계시는 분들도 계시겠지만, 모르면 그게 정상입니다. 한순간에 "아하 순간"을 경험하게 될 것입니다. 다음 단락을 주의 깊게 읽으십시오.

위의 코드는 문자열 값을 변경하지 않고 건드리지도 않았기 때문에 작동합니다. 대신 'Arnold'라는 문자열 값 person에게 더 이상 'Ernold'를 참조(가리키지)하지 않도록 변수 문자열 값.

기본 값은 변경할 수 없지만 변수는 변경할 수 있습니다!

변수는 값이 아니므로 가변성 또는 불변성의 규칙은 동일하지 않습니다. 변수는 값만 가리킵니다.

이전 문자열 값 'Ernold'를 건드린 적이 없습니다. 직접적으로 person에게 'Arnold'라는 다른 문자열을 가리키는 변수 그런 다음 console.log()를 사용했습니다. 결과를 출력합니다.

여러분 중 일부는 제가 여기서 죽은 말을 이기고 있다고 생각할 수도 있지만 JavaScript가 작동하는 방식에 대해 이러한 인식을 갖는 것이 중요합니다. 반복은 당신의 친구입니다.

참고:이 전체 자습서에서 사용한 변수 유형은 let 키워드 유형입니다. — 이전 코드 예제에서 본 것처럼 변경 가능합니다. const를 사용했다면 변수가 있었다면 상황이 달라졌을 것입니다. 하지만 다른 튜토리얼을 위해 해당 주제를 저장하겠습니다.

요약:

자바스크립트:

  • 기본값이 아닌 값을 참조, 액세스 및 변경할 수 있습니다.
  • 기본 값을 참조하고 액세스할 수 있지만 변경할 수는 없습니다.
  • 변수와 값은 서로 다른 두 가지이며 다른 규칙이 적용됩니다.