자바스크립트는 객체 기반의 script 언어이다. 따라서 JS 안의 거의 모든 것은 객체라고 봐도 무방하다.
객체는 원시타입을 제외한 나머지 값들(배열, 함수, 정규표현식 등) 모두 객체이며, 참조에 의한 전달 (pass-by-refernce) 방식으로 전달된다.
(원시타입은 boolean /null /undefined /number /string /symbol 이 있다)
일단 객체에 대한 예제 전에 비교연산자에 대해 잠깐 보고 가자.
'''
5==5
5=='5'
5==='5'
'''
자 여기서 false 인 녀석은 마지막이다.
== 는 '값' 만 비교해서 같으면 해당 값이 수이든 string이든 같은 값이라고 판단한다.
===는 '값' 과 '타입' 을 비교한다 따라서 숫자 5 와 string '5' 는 다르므로 마지막이 false가 되겠다
'''js
const Jay1 = { name: 'Jay'};
const Jay2 = { name: 'Jay'};
const Jay3 = Jay1;
'''
자 이랬을때
'''js
console.log(Jay1 == Jay2);
console.log(Jay1 === Jay2);
console.log(Jay1 === Jay3);
'''
이것들에 대한 정답은?
false
false
true 이다
일단 위에서 객체는 '참조'에 의한 전달 방식이라고 했다
Jay1 -> ref1 -> name:Jay1
Jay2 -> ref2 -> name:Jay2
Jay3 -> ref1
을 가르키므로 Jay1===Jay3 /// True
나머지는 false 가 되겠다