== 과 ===

kangdari·2020년 5월 16일
0

== 과 ===

JavaScript는 엄격한 비교와 형 변환(동등) 비교 두 가지의 비교 방법을 가지고 있습니다. 엄격 비교(===)는 두 피연산자가 같은 자료형에, 그 값도 일치해야 참입니다. 동등 비교(==)는 비교 전에 두 피연산자를 동일한 자료형으로 변환한 뒤 비교합니다.

== (동등 연산자)

  • 두 피연자의 자료형이 같지 않은 경우 같아지도록 변환 후, 엄격 비교 수행
  • 원시 타입을 비교 시, 타입 변환이 발생. (number, string, boolean, null, undefined)
1 == 1 					// true
1 == '1' 				// true
0 == false 				// true

0 == null 				// false
0 == undefined 				// false

null == undefined 			// true
  • 피연산자가 모두 객체라면, javascript는 내부 참조를 보고, 둘 다 메모리의 같은 객체를 바라보고있는지 판별함. ex) 객체, 배열
const a = {}
const b = {}

console.log(a == b )	// false
console.log(a === b )	// false

=== (일치 연산자, 엄격 비교)

  • 자료형 변환 없이 두 연산자가 엄격히 같은지 판별

  • 같은 자료형, 값이어야 참

3 === 3 				// true

3 === '3'				// false
null === undefined 			// false

주의할 점

null은 값이 없음을 명시적으로 나타낸 값이고, undefined는 값이 없는 상태이다.
==으로는 true 이지만, ===으로는 false를 반환한다.

undefined ==  null		// true
undefined === null		// false

javascript에서 문자열은 원시 타입이지만 객체로도 생성이 가능하다. 이 경우 =====의 결과가 다르다.

const a = 'str'
const b = new String('str')

console.log(a == b) // true
console.log(a === b) // false

성능 측면에서는 큰 차이는 없지만 안전한 타입 체크와 복잡한 상황에서의 정확성을 위해 ===를 사용하는 것을 추천.

0개의 댓글