s e o p p o r t . l o g

카테고리 없음

[JavaScript] 틸드 연산자 (Tilde ~) 활용법

Seo Ji Won 2024. 8. 6. 23:15

 

1. 더블 틸드(~~)로 Math.floor처럼 사용하기

비트 NOT 연산자(~)는 정수의 모든 비트값을 반전시키는 역할을 한다.

이걸 이용하면  Math.floor()와 비슷하게 소수점을 버리고 정수 부분만 남길 수 있다. 

Math.floor()나 parseInt()보다 연산 속도가 빠르다고 한다.

const num = 3.14;
console.log(~~num);  // 출력: 3

 

동작 과정

  1. 소수점을 제거하기 전 비트 변환:
    • 숫자가 3.14 일 때
    • JavaScript에서는 숫자를 64비트 부동 소수점으로 저장하지만, 비트 연산을 할 때는 32비트 정수로 변환된다.
  2. 첫 번째 비트 NOT 연산:
    • 3.14의 비트 NOT 연산을 통해 ~3.14는 -4로 변환된다. 
  3. 두 번째 비트 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

 

이 방법은 값을 안전하게 초기화할 때 유용하며, 특히 변수를 정수형으로 강제 변환할 때 도움을 준다.