라떼군 이야기
자바스크립트에서 double tilde (~~)의 의미
Problem
자바스크립트를 사용하다보면 ~~
를 이용해 구현된 코드를 가끔 접하게 되는데, 처음 접하는 경우 어떤 의미인지 알기 어려울 수 있는데, 간단하게 정리해보고자 한다.
Solution
~~
는 이중 NOT
의 비트 연산자 이다1.
양수에 대해서는 Math.floor()
과 같고 음수에 대해서는 Math.ceil()
과 같은 결과를 나타낸다. (아래 예제 참조).
Math.floor
가 일부 브라우저에서 더 좋은 성능을 보여주고 있기 때문에(일부에서 느린 경우도 있다) 문맥의 이해가 어려운 ~~
보다 Math
함수를 사용하는 것이 좋은 경우도 있다. (성능 차이는 아주 적으므로 이해하기 쉬운 코드로 작성하는 것이 더 좋다.)
function(x) {
if(x < 0) return Math.ceil(x);
else return Math.floor(x);
}
사용 예제
~~(-5.7) // -5
~~(5.7) // 5
prefix += ~~(Math.random() * 1000000)
this.value = ~~this.value; // cast to ints.