자바스크립트 아카데미 #1: 원시값 vs 참조값

이 새로운 아카데미에 오신 것을 환영합니다! 여기서는 자바스크립트를 처음부터 설명하지 않겠습니다. 이 자바스크립트 아카데미의 목표는 자바스크립트 엔진을 이해하는 데 도움이 되는 자바스크립트의 개념을 설명하는 것입니다!

오늘은 primitive valuereference value의 차이점을 보여드리겠습니다.

기본 값



기본 값은 string , number , boolean , null , undefinedsymbols 입니다.

기준값


plain object {} , array , Map 등과 같은 다른 모든 것...

데이터는 어떻게 저장됩니까?



기본 값의 경우 값은 stack, 즉 current context!에 저장됩니다.

참조 값의 경우 값은 heap에 저장되며, 모두objects를 보관하고 각각object에 자체 주소가 있는 큰 저장소입니다! (마을의 집처럼 집집마다 주소가 있다)



따라서 object를 통해 Heap를 가져오려면 이 주소object를 사용해야 합니다!



다행스럽게도 adress를 직접 관리할 필요가 없습니다!

변수 선언



기본 값의 경우 변수는 값을 저장합니다. 따라서 이 변수에 저장된 actual value를 조작합니다.

let toto = 5
toto = 6
console.log(toto) // 6




개체를 조작할 때 기본 값과 달리 참조 값의 경우 해당 개체의 reference에서 작업합니다! 따라서 개체의 reference를 변수에 저장합니다.

let toto = {}
toto.a = 'hello'
console.log(toto) // { a: 'hello' }




값 복사



기본 값의 경우 primitive value를 저장하는 변수를 할당하면 value를 새 변수에 복사합니다.

따라서 값을 변수로 수정하면 다른 변수 값은 변경되지 않습니다.

let a = 55
let b = a

a = 100
console.log(a) // 100
console.log(b) // 55




저장하는 변수를 할당할 때 참조 값의 경우reference value 이 객체의 참조를 새 변수에 복사합니다.

따라서 값을 변수로 수정하면 다른 변수 값이 변경됩니다! 두 변수가 동일하므로reference !

let a = {}
let b = a

a.toto = 'hello'
console.log(b) // { toto: 'hello' }




함수 매개변수 작업



함수의 인수로 primitive value를 포함하는 변수를 전달할 때 프리미티브 값의 경우 이 변수의 value를 복사합니다.

따라서 이 값을 함수로 편집해도 원래 변수의 값은 변경되지 않습니다!

let a = 55

const foo = function (arg) {
   arg = 100
   console.log(arg) // 100
}
foo(a)
console.log(a) // 55


함수의 인수로 reference value를 포함하는 변수를 전달할 때 참조 값의 경우 이 변수의 reference를 복사합니다.

따라서 이 값을 함수로 편집하면 원래 변수의 값이 변경됩니다!

let a = { toto: 'hello' }

const foo = function (arg) {
   arg.toto = 'changed'
   console.log(arg) // { toto: 'changed' }
}
foo(a)
console.log(a) // { toto: 'changed' }

reference value로 작업할 때 볼 수 있듯이 이것을 공유하는 다른 변수reference value를 편집할 수 있습니다!


나는 당신이 이 독서를 좋아하기를 바랍니다!

🎁 나를 팔로우하고 메시지를 보내면 내 새 책Underrated skills in javascript, make the difference을 무료로 받을 수 있습니다 😁 그리고 SAVE 19$ 💵💵

또는 가져오기HERE

🇫🇷🥖 프랑스 개발자의 경우 내

🎁 MY NEWSLETTER

☕️할 수 있습니다SUPPORT MY WORKS 🙏

🏃‍♂️ 👇에서 저를 팔로우하실 수 있습니다.

🕊 트위터 :

👨‍💻 Github: https://github.com/Code-Oz

그리고 이 글을 🔖 표시할 수 있습니다!

좋은 웹페이지 즐겨찾기