Comparison Operator (비교 연산자)

비교연산자란?

비교연산자란 좌항과 우항의 값을 비교하여 Boolean값 즉, true, false를 반환합니다. javascript는 엄격한 비교(===)와 형변환 비교(==)와 같이 두가지의 비교 연산자를 갖고 있습니다.

동등 연산자 (==)

동등 연산자는 좌항과 우항을 비교 할 때 서로 타입이 다르면 같은 타입을 일치시키고 같은 값인지 비교합니다. 따라서 좌항과 우항의 타입이 다르더라도 값만 비교하기 때문에 타입이 일치 된 후 값이 같을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
1 == 1 // true
"1" == 1 // true
1 == "1" // true
1 == true // true
0 == 0 // true
0 == "" // true
0 == "0" // true
0 == false // true
null == undefined // true
false == "0" // true

위와 같이 stringnumber타입이 다르더라도 서로 같은 타입으로 변환 후 비교하기 때문에 숫자 1과 문자 1의 비교는 true를 반환합니다. 또한 빈 string과 숫자 0은 javascript에서 false를 의미합니다. 따라서 숫자 0과 빈 문자열 ""는 비교 시 true를 반환합니다.

1
2
3
4
5
6
false == "false" // false
false == undefined // false
false == null // false
0 == undefined // false
0 == null // false
NaN == NaN // false

하지만 false와 문자열 "false"의 비교는 false입니다. 문자열 "false"는 문자가 존재하기 때문에 빈 문자열을 false로 판단하는 것과 다르기 때문입니다. 또한 undefinednull, NaN과 같이 예측하기 어려운 비교 결과를 볼 수 있습니다. 따라서 개발 시 비교 연산자를 사용하게 된다면 일치 연산자(===)를 사용하는 것이 좋습니다.

일치 연산자 (===)

동등 연산자와는 다르게 일치 연산자는 좌항과 우항의 값과 타입이 모두 일치하는 경우에만 true를 반환합니다.

1
2
3
4
0 === "0" // false
0 === false // false
1 === true // false
null === undefined // false

위와 같이 동등 연산자에서 true를 반환 한 값들은 일치 연산자에서 타입까지 같지 않기 때문에 false를 반환합니다.

1
NaN === NaN // false

하지만 NaN의 경우는 자신과 일치하지 않는 유일한 값입니다.

1
isNaN(NaN) // true

따라서 NaN인지 확인하려면 isNaN이라는 빌트인 함수를 이용하여 NaN 값을 확인해야 합니다.

공유하기