WEB/Javascript

[JavaScript] tilde(~) 연산자

dev-olive 2023. 1. 12. 20:10

tilde(~) 연산자

tilde 연산자는 비트연산자로 NOT의 기능을 한다.

아래와 같이 2진수일 때 0과 1만 뒤바뀐다.

const a = 5;            // 0000000000000101
console.log(~a);    // 1111111111111010
// -6

double tilde(~~)

tilde를 2번 반복해 주는 것

let k = 8;
~k;         // -9
~~k;        // 8
  1. Math.floor()를 대신해 사용할 수 있다.

    • 속도 측면에서 ~~가 가장 빠르다고는 함
    • 다만, 직관적이지 않아 사용하지 않는 것을 권장
  2. undefined, null을 0으로 변환할 때 사용

    undefined + 3 // NaN 의 상황이 생기는 경우를 방지할 수 있다.

    const arr = [1,1,1,2,2,3,3,3,3];
    const obj1 = {};
    
    // obj에 key 값이 있는지 확인해주는 작업이 필요
    arr.forEach(v => {
      if(obj[v]) obj[v] = 0;
      obj[v] ++;
    })
    // ~~는 undefined를 0으로 반환하기 때문에 간결하게 작성 가능
    arr.forEach(v => obj[v] = ~~obj[v] +1);

Reference

https://velog.io/@proshy/JS-tilde%EA%B3%BC-double-tilde%EC%97%B0%EC%82%B0%EC%9E%90