javascript

[javascript] #3. Value Types

기계학습점쟁이 2023. 2. 13. 16:55
console.log([10] === [10])
console({'a': 20} === {'a': 20})
let a = 50;
let b = a; # <--- whats on a? a = 50

a = 10;

console.log(b);

value란?

Q. b값을 예상해보자

A. 아마 10? b는 a를 보고 있으니까?

아님. 여전히 50. 이것이 value.

 

두번째 라인에서 a값이 뭔지 물어본다. 여기까지는 50. 그래서 밑에서 10으로 바꿔도 영향에서 벗어난다. a값을 복사하니까. value를 복사하는 것!

 

const sexy = ["kimchi", "potato"]
const pretty = sexy;

sexy.push("hello");
pretty.push("lalala");

console.log(pretty);

kimchi, potato, hello는 모두 'pretty'안에 있음. 이것을 reference라고 함.

프리티 변경을 해도 섹시를 변경하면 프리티가 업데이트 즉 값 복사가 아니라 참조하고 있는 것이다.

배열은 둥둥 떠있고 섹시는 해당 배열을 가르키고 있다. 

 

pretty.push("lalala"); 적용하면 섹시는 랄랄라까지 갖게 됨.

const x = {
	a: 'hello'
 }
 
 const b = x;
 
 b.a = 'lalalala'
 
 console.log(x)

이 상황에선 x를 업데이트 할 수 있다. 이 것이 value와 reference의 차이점.

 

value는 string, number, boolean, NaN, underfined, null이 가능하고 reference는 object, function, array에서 사용할 수 있다.