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
'programing' 카테고리의 다른 글
MySQLWorkbench에서 바로 가기로 문 실행 (0) | 2022.10.02 |
---|---|
특정 다른 열 값에 대해서만 한 열에 대한 색인 (0) | 2022.10.02 |
문자열 목록에서 쉼표로 구분된 문자열을 만들려면 어떻게 해야 합니까? (0) | 2022.10.02 |
Java: printf 문의 리터럴 퍼센트 사인 (0) | 2022.10.02 |
GMail, Yahoo 또는 Hotmail을 사용하여 Java 어플리케이션으로 이메일을 보내려면 어떻게 해야 하나요? (0) | 2022.10.02 |