자바스크립트의 비교 연산자는 값뿐만 아니라 자료형까지 검사하여 엄격한 비교를 수행하는 일치 연산자(===)와 형변환 비교로 값 만을 비교하는 관계 연산자(==)로 나뉩니다.
console.log(1 == 1);
// expected output: true
console.log('1' == 1);
// expected output: true
console.log(1 === 1);
// expected output: true
console.log('1' === 1);
// expected output: false
비교 연산자의 특징은 다음과 같습니다.
- 두 문자열(String)의 엄격한 비교는 서로의 문자가 같은 순서를 가지고, 같은 길이를 가지고, 대응하는 위치의 문자가 같은지
- 두 숫자(Number)의 엄격한 비교는 두 값이 같을 때를 말하며, NaN은 NaN을 포함하여 어떤 값과도 같지 않음
- 두 부울(Boolean)의 엄격한 비교는 둘 다 참이거나 둘 다 거짓인 경우
- 서로 다른 두 객체는 엄격한 비교든 형변환 비교든 같지 않고 같은 객체를 참조한 경우에만 참을 반환
- Null과 Undefined 자료형은 자기 자신과는 엄격한 비교, 서로 간에는 형변환 비교가 적용됨
동등 연산자(==)
동등 연산자는 피연산자들의 타입이 서로 다를 경우 같은 타입으로 바꾼 후에 엄격한 비교를 적용합니다. 만약 둘 다 객체라면, 자바스크립트 내부에서 메모리를 검사하여, 두 피연산자가 메모리에서 같은 객체를 가리킨다면 두 객체를 같다고 판정합니다.
1 == 1 // true
"1" == 1 // true
1 == '1' // true
0 == false // true
0 == null // false
0 == undefined // false
null == undefined // true
부등 연산자(!=)
부등 연산자는 피연산자들이 같지 않다면 참을 반환합니다. 동등 연산자와 마찬가지로 두 피연산자가 같지 않다면 비교하기에 적당한 타입으로 바꾼 후에 엄격한 비교를 수행합니다.
1 != 2 // true
1 != "1" // false
1 != '1' // false
1 != true // false
0 != false // false
일치 연산자(===)
일치 연산자는 피연산자들끼리 자료형과 값이 둘 다 같을 경우, 참을 반환하는 엄격한 비교 연산자입니다.
3 === 3 // true
3 === '3' // false
불일치 연산자(!==)
불일치 연산자는 타입이 다르거나 또는 값이 다르면 참을 반환합니다.
3 !== '3' // true
4 !== 3 // true
관계연산자
두 피연산자의 값을 크기로 비교하는 연산자입니다. >, <, >=, <=가 있으며, >와 <는 한쪽의 값이 크면 참을 반환하고 >=와 <=는 한 쪽의 값이 크거나 동일한 경우에 참을 반환합니다.
4 > 3 // true
2 > 3 // false
4 >= 3 // true
3 >= 3 // true
2 >= 3 // false
3 < 4 // true
3 < 2 // false
3 <= 3 // true
3 <= 4 // true
3 <= 2 // false
또한 자바스크립트에서는 숫자형 뿐만 아니라 문자열 사이에서도 비교 연산이 가능합니다. 알파벳으로 문자열을 나열하면 항상 대문자가 소문자보다 앞선 순서로 정렬되는 것을 볼 수 있는데, 이는 유니코드(Unicode) 기준에 따라 처리되기 때문입니다. 예를 들어 대문자인 'A'는 소문자인 'a'보다 큰 값입니다.
"apple" > "Apple" // true
"Incheon" < "Seoul" // true
'웹프로그래밍 > javascript' 카테고리의 다른 글
javascript 객체, 배열 비구조화 할당 (0) | 2020.01.30 |
---|---|
자바스크립트(javascript) 객체란 무엇인가? (0) | 2020.01.27 |
자바스크립트(javascript) 템플릿 문자열(template strings) 알아보기 (0) | 2020.01.25 |
자바스크립트(javascript) null과 undefined의 차이 (0) | 2020.01.25 |
자바스크립트(javascript) 문자열 다루기 (0) | 2020.01.21 |