1. 더블 틸드(~~)로 Math.floor처럼 사용하기
비트 NOT 연산자(~)는 정수의 모든 비트값을 반전시키는 역할을 한다.
이걸 이용하면 Math.floor()와 비슷하게 소수점을 버리고 정수 부분만 남길 수 있다.
Math.floor()나 parseInt()보다 연산 속도가 빠르다고 한다.
const num = 3.14;
console.log(~~num); // 출력: 3
동작 과정
- 소수점을 제거하기 전 비트 변환:
- 숫자가 3.14 일 때
- JavaScript에서는 숫자를 64비트 부동 소수점으로 저장하지만, 비트 연산을 할 때는 32비트 정수로 변환된다.
- 첫 번째 비트 NOT 연산:
- 3.14의 비트 NOT 연산을 통해 ~3.14는 -4로 변환된다.
- 두 번째 비트 NOT 연산:
- 다시 비트 NOT 연산을 통해 ~-4는 3으로 변환된다.
2. null 또는 undefined를 0으로 바꿀 때 사용하기
틸드 연산자는 null이나 undefined와 같은 비정수 값을 0으로 변환하는 데도 활용된다. 일반적으로 비트 연산자는 숫자로 암묵적으로 변환되기 때문에, 틸드 연산자(~)를 사용하면 다음과 같은 효과를 얻을 수 있다:
- null은 0으로 변환된다.
- undefined는 NaN으로 변환되며, 틸드를 두 번 적용하면 0으로 변환된다.
const a = null;
const b = undefined;
console.log(~~a); // 출력: 0
console.log(~~b); // 출력: 0
이 방법은 값을 안전하게 초기화할 때 유용하며, 특히 변수를 정수형으로 강제 변환할 때 도움을 준다.