==, === 차이점

양세희·2022년 5월 29일
0
post-thumbnail
post-custom-banner

==는 Equal Operator이고, ===는 Strict Equal Operator이다.

==

a==b 라고 할 때, a와 b의 값이 같은지를 비교해서, 같으면 true, 다르면 false를 반환한다. (값만 같으면 true인 것이다.)

===

a===b 라고 할 때, 값과 값의 종류(Data Type)가 모두 같은지를 비교해서, 같으면 true, 다르면 false를 반환한다.

예시

값은 똑같이 1이지만 값의 종류가 숫자냐, 문자열이냐에 따라 === 연산자를 사용할 때 결과가 false라고 나온다.

var a = 1;

var b = "1";

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

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

null과 undefined는 공통적으로 값이 없음을 뜻하지만, 값의 종류(Data Type)가 다르기 때문에, === 연산자를 사용할 때 결과가 false라고 나온다.
console.log(null == undefined); // true

console.log(null === undefined); // false

기본적으로 1은 true, 0은 false로 나타낼 수 있지만, 데이터 타입은 다르다.
console.log(true == 1); // true
console.log(true === 1); // false

숫자 0과 문자열 "0", ""
console.log(0 == "0") // true

console.log(0 === "0") // false

console.log(0 == ""); // true

console.log(0 === ""); // false

NaN은 Not a Number라는 뜻으로, 숫자가 아닌 것을 의미하지만 그 값 자체끼리는 같지 않다.
console.log(NaN == NaN); // false

console.log(NaN === NaN); // false

객체형 (Object type)
var a = [1,2,3]; 

var b = [1,2,3]; 

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

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

배열을 할당할 때, 변수는 각 메모리의 주소를 참조한다.
두 변수 a, b의 값과 데이터 타입이 같지만, 이와 상관없이 참조하는 메모리의
주소가 다르기 때문에 a, b는 같지 않다.

var a = [1,2,3]; 

var b = [1,2,3]; 

var c = b; 

console.log(b === c); // true 

console.log(b == c); // ture 

새로운 변수 c에 변수 b를 할당해주면, 변수 c도 b가 참조하는 같은 메모리의 주소를 참조하게 되어, 두 변수 c, b는 같다. c, b의 값과 데이터 타입이 같기 때문에,
==와 ===의 결과같이 동일하다.

객체도 동일하다.

var x = {}; 

var y = {}; 

var z = y; 

console.log(x == y) // false 

console.log(x === y) // false 

console.log(y === z) // true 

console.log(y == z) // true 
post-custom-banner

0개의 댓글