흙금이네 블로그

[자바스크립트 기본] 09. 비교 연산자 본문

TIL/JavaScript

[자바스크립트 기본] 09. 비교 연산자

흙금 2023. 2. 13. 00:47

 

 

자바스크립트의 비교 연산자는 보다 큼(>), 작음(<), 크거나 같음(>=), 작거나 같음(<=), 같음(==), 같지 않음(!=)이 있다.

 

 

비교 연산자의 반환값은 불린형으로, 변수에 할당할 수 있다.

true가 반환되면 긍정, 참, 사실을 의미하고, false가 반환되면 부정, 거짓 사실이 아님을 의미한다.

alert(2 > 1);  // true
alert(2 == 1);  // false
alert(2 != 1);  // true

let result = 3 > 4;
alert(result);  // false

 

 

문자열은 유니코드 순으로 비교하며, 유니코드 순으로 인덱스가 더 큰 문자열이 더 크다고 판단된다.

두 문자열의 글자들을 차례로 비교하여 글자가 더 크거나 작은 문자열이 다른 문자열보다 크거나 작다고 판단되고,

비교가 끝날 때까지 결론이 나지 않으면 길이가 더 긴 문자열이 더 큰 것으로, 길이가 같다면 두 문자열은 같다고 판단된다.

alert('Z' > 'A');  // true
alert('Glow' > 'Glee');  // true
alert('Bee' > 'Be');  // true

 

 

비교하는 두 값의 자료형이 다르면 이를 숫자형으로 변환하여 비교한다.

alert('2' > 1);  // true, 문자열 '2'를 숫자 2로 변환
alert('01' == 1);  // true, 문자열 '01'을 숫자 1로 변환
alert(true == 1);  // true, 불린형 true를 숫자 1로 변환
alert(false == 0);  // true, 불린형 false를 숫자 0으로 변환
alert(2 == true);  // false, 불린형 true를 숫자 1로 변환

 

 

Boolean을 사용한 명시적 변환에는 다른 규칙이 사용된다.

let a = 0;
alert(Boolean(a));  // false

let b = '0';
alert(Boolean(b));  // true

alert(a == b);  // true

 

 

형 변환이 일어나는 동등 연산자(==)와 달리 일치 연산자(===)는 형 변환 없이 값을 비교할 수 있다.

alert(0 === false);  // false

 

 

null과 undefined는 일치 연산자를 사용하여 비교하면 거짓이 반환되고 동등 연산자를 사용하여 비교하면 참이 반환된다.

alert(null === undefined);  // false
alert(null == undefined);  // true

 

 

산술 연산자나 기타 비교 연산자를 사용하여 null과 undefined를 비교할 때, null은 0, undefined는 NaN으로 변환된다.

그러나 동등 연산자를 사용할 때는 null과 undefined의 형을 변환하지 않는다(null과 undefined 비교 시에만 true 반환).

alert(null > 0);  // false
alert(null >= 0);  // true
alert(null == 0);  // false

 

 

undefined를 다른 값과 비교하면 NaN으로 변환되는데, NaN이 피연산자일 때 비교 연산자는 항상 false를 반환한다.

alert(undefined > 0);  // false
alert(undefined < 0);  // false
alert(undefined == 0);  // false

 

 

따라서 명확한 의도 없이 일치 연산자를 제외한 비교 연산자의 피연산자에 null이나 undefined가 오지 않도록 하고,

null이나 undefined가 될 수 있는 변수가 >, <, >=, <=와 같은 비교 연산자의 피연산자가 되지 않도록 주의해야 한다.

 

 

 

참고

https://ko.javascript.info/comparison

Comments