js는 == operator로 비교를 하면 형변환을 했을 때 동일하면 true를 반환합니다
triple equals(===) operator는 형변환을 하지 않고 비교합니다
'' == false // true
'' === false // false
이정도는 다 알고 계실 겁니다.
근데 문제는 ===가 primitive type에서만 유효하다는건데, object를 비교하는 것은 좀 머리아픕니다. 안에 내용물을 다 까봐서 비교하는 deep comparison이 아니기 때문입니다.
const 김실장 = {"phone": "010-0000-0000"}
const 박실장 = {"phone": "010-0000-0000"}
const 김실장_분신 = 김실장
김실장 === 박실장 // false
김실장_분신 === 김실장 // true
object의 경우 레퍼런스가 같으면 true, 아니면 false입니다.
직접 구현하려면 이런식으로 짜야됩니다.. 오마이갓..
var object = { 'a': 1 };
var other = { 'a': 1 };
_.isEqual(object, other);
// => true
object === other;
// => false
답은 그냥 lodash의 isEqual을 쓰는겁니다.
미래의 ES에는 뭔가 더 깔끔하고 라이브러리 없이 쓸 수 있는 방법이 있을수도..?
반응형
'프로그래밍 > Javascript' 카테고리의 다른 글
[Javascript] Phaser3 게임 제작 강의 추천 - 뱀파이어 서바이버 클론 (0) | 2023.04.27 |
---|---|
[Gatsby] trailingSlash 옵션 (0) | 2022.12.11 |
[Gatsby] shadowing 상대경로 주의사항 (0) | 2022.12.09 |
Yarn 강제하는 방법 (0) | 2021.09.02 |
자바스크립트 우클릭 방지 (0) | 2016.10.31 |