비교에 대해 아주 간단히 정리하면
- 숫자, 문자열, 불리언 값 비교 : ==,=== 을 통해 비교
- == : 값을 비교
- === : 값과 형을 비교 (메모리 주소값도 비교)
- === 이 == 에 비해 더 엄격
- 프로젝트를 할 때는 보통 == 를 사용해서 비교해왔음
- 하지만 정확한 비교를 위해서는 === 사용
예시 코드
console.log("1" == 1) // true
console.log("1" === 1) // false
자바스크립트는 == 로 값을 비교할 때 비교하기 전에 문자열 "1" 을 숫자 1로 변환시킨다.
반면, === 는 형(타입)까지 비교하기 때문에 문자열인 "1"과 숫자 1은 다르다고 판단한다.
그렇다면 두 객체는 어떻게 비교해야 할까?
위에서 사용한 ==, ===를 통해 접근하면 기대했던 결과와 다른 값이 나온다.
var sample_object1 = {}
var sample_object2 = {}
console.log(sample_object1 == sample_object2) // false
console.log(sample_object1 === sample_object2) // false
그래서 객체를 비교할 때는 라이브러리(lodash 등) 을 썻 비교하기도 하고, 귀찮지만 코드로 객체 내부를 돌며 하나하나 비교해볼 수도 있다.
function equal_check(obj1, obj2) {
var obj1Keys = Object.getOwnPropertyNames(obj1)
var obj2Keys = Object.getOwnPropertyNames(obj2)
if (obj1Keys.length != obj2Keys.length) {
return false
}
// 객체 내부를 돌면서 속성값을 비교
for (var i=0; i < obj1Keys.length; i++) {
var keyName = obj1Keys[i]
if (obj1[keyName] != obj2[keyName]) {
return false
}
}
return true
}
console.log(equal_check({"name":"ddubadduba","age":100},{"name":"dduba-dduba","age":50})) // false
'Language > JavaScript' 카테고리의 다른 글
[ JS 기초 ] 소수 확인, 소인수 분해 (0) | 2021.07.05 |
---|---|
[ JS 기초 ] Number객체, JS로 표현할 수 있는 숫자 범위 (0) | 2021.07.02 |
[ JS 기초 ] Boolean 객체의 값(t/f) VS Boolean 값(t/f) (0) | 2021.06.28 |
[ JS 기초 ] 기본 코드 - 변수(var,let) 활용 (0) | 2021.06.27 |
[ JS 기초 ] 기본 코드 - 출력, 반복문, 덧셈 (0) | 2021.06.27 |
댓글