js 조건문과 비교연산자

배열의 sort함수를 사용하면서 condition함수를 작성하던 중 실수가 있었다.

사소한 실수지만 실수를 통해 공부한 것들을 정리해두려고 한다.

자바스크립트의 비교 연산자는 두 가지가 존재한다.

==

==는 값을 비교하여서 같으면 true, 다르면 false이다.

아래의 코드를 실행하였을 때 0과 -0은 false, 양수인 1은 true, 음수는 true, false 아무 값도 가지지 않았다.

1
2
3
4
5
6
7
8
9
console.log("0==:", 0 == true, 0 == false);
console.log("-0==:", -0 == true, -0 == false);
console.log("1==:", 1 == true, 1 == false);
console.log("-1==:", -1 == true, -1 == false);

// 0==: false true
// -0==: false true
// 1==: true false
// -1==: false false

===

=== 연산자는 값과 데이터의 타입이 모두 같으면 true, 다르면 false이다.

아래의 코드를 실행하여 보았다.
숫자는 데이터타입이 Number이므로 콘솔에는 다음과 같은 결과가 찍혔다.

1
2
3
4
5
6
7
8
9
console.log("0===:", 0 === true, 0 === false);
console.log("-0===:", -0 === true, -0 === false);
console.log("1===:", 1 === true, 1 === false);
console.log("-1===:", -1 === true, -1 === false);

// 0===: false false
// -0===: false false
// 1===: false false
// -1===: false false

if문

자바스크립트의 조건문인 if문에서는 falsy값(false,0,-0,null,undefined,NaN,"",0n)을 제외한 모든 값은 true로 간주된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (0) {
console.log("0 is true");
}
if (-0) {
console.log("-0 is true");
}
if (1) {
console.log("1 is true");
}
if (-1) {
console.log("-1 is true");
}

// 1 is true
// -1 is true

결론

오름차순 정렬을 위해서는 다음과 같이 적어야한다..!
적고보니 당연한 거지만 코드를 적을때는 미처 찾지 못하였다.

1
2
3
arr.sort((a, b) => {
if (a - b < 0) return -1;
});

댓글