programing

JavaScript에서 "double tilde"(~~) 연산자는 무엇입니까?

projobs 2022. 10. 2. 15:09
반응형

JavaScript에서 "double tilde"(~~) 연산자는 무엇입니까?

어떤 코드로 표시되어 있습니다만, 그 기능을 전혀 알 수 없습니다.

var jdn = function(y, m, d) {
  var tmp = (m <= 2 ? -1 : 0);
  return ~~((1461 * (y + 4800 + tmp)) / 4) + 
         ~~((367 * (m - 2 - 12 * tmp)) / 12) - 
         ~~((3 * ((y + 4900 + tmp) / 100)) / 4) + 
         d - 2483620;
};

이게 뭐야?~~오퍼레이터는?

그거~~는 비트가 아닌 이중 연산자입니다.

양수의 보다 빠른 대체 수단으로 사용됩니다.같은 결과를 반환하지 않습니다.Math.floor()음수의 경우 소수점 뒤에 있는 부분을 잘라내기 때문입니다(예에 대해서는 다른 답 참조).

암호의 의도가 숨겨져 있습니다.

2개의 단일 칠드 연산자이므로 비트 단위로 두 번(비트 단위로가 아님) 보완합니다.연산은 서로를 제거하므로 남은 유일한 효과는 첫 번째 연산자가 적용되기 전에 수행된 변환, 즉 값을 정수로 변환하는 것입니다.

일부에서는 이를 보다 빠른 대체 수단으로 사용하기도 합니다.Math.floor그러나 속도 차이는 그다지 크지 않으며, 대부분의 경우 마이크로 최적화일 뿐입니다.최적화할 필요가 있는 코드가 없는 한, 비조작의 부작용을 사용하는 코드 대신 그 기능을 설명하는 코드를 사용해야 합니다.

업데이트 2011-08:

브라우저에서의 JavaScript 엔진 최적화로 연산자와 함수의 성능이 변화합니다.현재 브라우저, 사용~~대신Math.floor브라우저에 따라서는 속도가 다소 빨라지지만 브라우저에 따라서는 전혀 빨라지지 않습니다.이러한 추가 성능이 필요한 경우 각 브라우저에 대해 서로 다른 최적화된 코드를 작성해야 합니다.

'칠데와 바닥' 참조

~(5.5)   // => -6
~(-6)    // => 5
~~5.5    // => 5  (same as Math.trunc(5.5) and Math.floor(5.5))
~~(-5.5) // => -5 (same as Math.trunc(-5.5) but NOT the same as Math.floor(-5.5), which would give -6 )

상세한 것에 대하여는, 다음을 참조해 주세요.

차이는 매우 간단합니다.

롱 버전

가독성을 향상시키려면Math.floor하지만 최소화하고 싶다면 tilde를 사용하세요.~~.

인터넷에는 많은 소식통들이 있다.Math.floor더 빠르지만 가끔은~~코드 실행 시 눈에 띄지 않기 때문에 속도에 대해서는 생각하지 않는 것이 좋습니다.테스트 등에서는 몰라도 여기서는 차이를 알 수 없어요.보다 빠른 것은, 을 사용하는 것입니다.~~로딩 시간을 단축합니다.

쇼트 버전

~~더 짧거나 더 적은 공간을 차지합니다. Math.floor가독성이 향상됩니다.에 따라서는일 수도 있고, 경우에 따라서는 '칠데'가 고속일 수도 있습니다.Math.floor을 사용법

언급URL : https://stackoverflow.com/questions/5971645/what-is-the-double-tilde-operator-in-javascript

반응형