Programming

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

procodes 2020. 2. 11. 22:45
반응형

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;
};

무엇 ~~운영자 할 일이?


그것은 ~~이중 NOT 비트 연산자입니다.

보다 빠른 대체 수단Math.floor() 으로 사용됩니다 .


코드의 의도를 숨 깁니다.

두 개의 단일 틸드 연산자이므로 비트 단위 (비트 단위는 아님)를 두 번 보완합니다. 연산은 서로를 취하므로 첫 번째 연산자가 적용되기 전에 수행되는 변환, 즉 값을 정수로 변환하면 나머지 효과 만 남습니다.

일부는이를보다 빠른 대안으로 사용 Math.floor하지만 속도 차이는 그다지 극적인 것이 아니며 대부분의 경우 마이크로 최적화입니다. 실제로 최적화해야하는 코드가 없다면, 비 작동의 부작용을 사용하는 코드 대신 코드의 기능을 설명하는 코드를 사용해야합니다.

2011-08 업데이트 :

브라우저에서 JavaScript 엔진을 최적화하면 연산자 및 함수의 성능이 변경됩니다. 현재 브라우저에서는 일부 브라우저에서 ~~대신 사용 하는 Math.floor것이 다소 빠르며 일부 브라우저에서는 전혀 빠르지 않습니다. 추가 성능이 필요한 경우 각 브라우저마다 다른 최적화 된 코드를 작성해야합니다.

참조 : 물결표 대 바닥


~(5.5)   // => -6
~(-6)    // => 5
~~5.5    // => 5  (same as Math.floor(5.5))
~~(-5.5) // => -5 (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



반응형