안녕하세요. Tay 입니다.
객체 간의 비교에 대해서 알아보겠습니다.
객체 비교
객체간의 비교를 할 때 참조값 으로 비교를 한다.
- object 안에 property 를 비교하는 것이 아닌, object 의 값(참조값) 을 비교한다.
- 같은 객체를 참조하는 것인지 주의 해야한다.
바로 예제를 통해서 알아보자.
1) index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!-- <script src="reference.js"></script> -->
<script src="compare.js"></script>
</body>
</html>
2) compare.js
let a = 100;
let b = 100;
let objA = {value : 100};
let objB = {value : 100};
let objC = objB;
console.log(a == b); // 1
console.log(objA == objB); // 2
console.log(objB == objC); // 3
- 기본 타입 a, b 를 비교한다.
- 객체 objA , objB 를 비교한다.
- 객체 objB , objC 를 비교한다.
위 세 비교문의 결과는 어떻게 출력 될까?
결과 :
- 기본 타입 a, b 를 비교한다. - true
- 객체 objA , objB 를 비교한다. - false
- 객체 objB , objC 를 비교한다. - true
이유 :
- a, b 는 기본타입이다. 즉, 원시 데이터 100 이라는 값을 가진 숫자형 변수 이다. 그렇기때문에 숫자 간 비교가 가능하다. 100 = 100 , 따라서 결과는 true 이다.
- objA 와 objB 는 객체이다. value 라는 프로퍼티에 원시데이터 100 을 갖고 있어도, 객체라서 참조값을 비교한다. 그렇기때문에 objA != objB , 따라서 결과는 false 이다.
- objC 에 objB 의 참조값을 할당했다. 따라서, 두 객체는 동일한 객체를 참조하고 있다.
즉, 동일한 참조값을 가진다. objB = objC , 따라서 결과는 true 이다.
이 글은 개인 공부목적으로 작성되었습니다.
정보가 잘못 되거나 궁금한 사항은 댓글로 부탁드립니다!! 읽어주셔서 감사합니다.
'JavaScript > Basic-Javascript' 카테고리의 다른 글
자바스크립트 정리하며 배우기[12] - 배열 개념 및 특성, 배열 선언 방법, 요소 생성, 프로퍼티 생성과 삭제 (0) | 2020.01.07 |
---|---|
자바스크립트 정리하며 배우기[11] - 프로토타입 객체(prototype), 부모객체 상속 (0) | 2020.01.07 |
자바스크립트 정리하며 배우기[09] - 참조(reference) 타입 개념 및 특성 (0) | 2020.01.07 |
자바스크립트 정리하며 배우기[08] - for in 문 객체 출력 (0) | 2020.01.06 |
자바스크립트 정리하며 배우기[07] - 객체 프로퍼티 읽기 / 쓰기 / 수정 / 삭제 (0) | 2020.01.06 |