choco5958
지마의 개발일기
choco5958
전체 방문자
오늘
어제
  • 전체보기 (46)
    • 개발 (34)
      • Java (0)
      • JavaScript (7)
      • Php (4)
      • Ios(Swift) (23)
    • 프론트엔드 (7)
      • Html (1)
      • Css (5)
    • 백엔드 (0)
      • Mysql (0)
      • Oracle (0)
      • MongoDB (0)
    • 서버 (2)
      • Linux (2)
    • 일상 (3)
      • 반려동물 (1)
      • 베이킹 (2)
      • 맛집 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • ios#swift#스위프트#아이폰#애플#상속
  • ios#swift#스위프트#프로퍼티#애플#아이폰
  • ios#swift#스위프트#아이폰#애플#타입캐스팅
  • ios#swift#스위프트#아이폰#애플#프로토콜
  • ios#swift#스위프트#아이폰#애플#함수
  • ios#swifth#스위프트#열거형#아이폰#애플
  • ios#swift#스위프트#조건문#아이폰#애플
  • ios#swift#스위프트#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#try-catch#오류처리
  • php#linux#soap#리눅스
  • ios#swift#스위프트#구조체#문법#애플#아이폰
  • ios#swift#스위프트#아이폰#클래스#애플
  • ios#swift#스위프트#클로저#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#고차함수
  • ios#swift스위프트#애플#아이폰#클래스#구조체
  • 자바스크립트#javascript#js#개발#웹개발
  • ios#swift#스위프트#애플#아이폰#assert#guard
  • swift#ios#스위프트#애플#아이폰#init#초기화구문
  • ios#swift#스위프트#아이폰#애플#옵셔널체이닝
  • php#500error

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
choco5958

지마의 개발일기

개발/JavaScript

자바스크립트(Javascript) 객체의 비교(원시값과의 차이점)

2021. 8. 4. 22:45

객체 간의 비교

 

객체를 다룰 때 가장 많이 실수하는 상황은 객체 간에 비교 연산을 할 때입니다.

{} === {}

//실행결과
false

 

객체가 아닌 숫자, 문자열, 불 값, null, undefined는 모두 true를 반환합니다.

'str' === 'str'
123 === 123;
false === false;
null === null;
undefined === undefined;

//실행결과 모두
true

 

객체는 모양이 같아도 생성할 때마다 새로운 객체가 생성됩니다. 따라서 같은 객체인지 비교하고 싶다면 기존 객체를 변수에 저장해 두어야 합니다.

const a = { name: '홍길동' };
const array = [1, 2, a];

console.log(a === array[2]);

//실행결과
true

 

참조와 복사

 

객체를 사용할 때 반드시 알아야 하는 개념은 참조(reference)입니다.

const a = { name: '홍길동' };
const b = a;
a.name = 'hero';

console.log(b.name);

//실행결과
hero

변수 b에 a를 대입한 상황입니다. a 변수의 name 속성 값을 변경했는데, b 변수도 같이 변경됐습니다.

객체를 저장한 변수를 다른 변수에 대입하면 두 변수 모두 같은 객체를 저장하는 셈이 됩니다.

a 와 b 변수 모두 같은 객첼르 저장하고 있는 것이므로 객체의 속성 값을 바꾸면 변수 a와 b 모두 바뀌는 것처럼 보입니다.

이러한 상황일 때 변수 a와 b가 같은 객체를 참조하고 있다고 표현합니다.

또는 a와 b 그리고 객체 간에 참조 관계까 있다고 표현합니다.

다만, 객체가 아닌 값(문자열, 숫자, 불 값, null, undefined)의 경우는 조금 다릅니다.

let a = '홍길동';
let b = a;
a = 'hero';

console.log(b);

//실행결과
'홍길동'

 

객체 안에 객체가 있을 때, '홍' 값에 접근하는 방법은?

const info = {
  name: {
    first: '길동',
    last: '홍',
  },
  gender: 'm',
};

//정답
info.name.last;
info['name']['last'];

'개발 > JavaScript' 카테고리의 다른 글

특정 위치로 스크롤  (0) 2022.09.27
자바스크립트(Javascript) 순서도를 그리는 이유  (0) 2021.08.23
자바스크립트(Javascript) 객체 리터럴 기본  (0) 2021.08.04
자바스크립트(Javascript) 매개변수(Parameter)와 인수(Argument)  (0) 2021.08.04
자바스크립트(Javascript) 함수(function) 기본  (0) 2021.08.04
    '개발/JavaScript' 카테고리의 다른 글
    • 특정 위치로 스크롤
    • 자바스크립트(Javascript) 순서도를 그리는 이유
    • 자바스크립트(Javascript) 객체 리터럴 기본
    • 자바스크립트(Javascript) 매개변수(Parameter)와 인수(Argument)
    choco5958
    choco5958
    안녕하세요. 개발 및 일상 팁 들을 포스팅하는 블로그입니다.

    티스토리툴바