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
'Programming' 카테고리의 다른 글
C ++ 컴파일이 왜 그렇게 오래 걸립니까? (0) | 2020.02.11 |
---|---|
SQL Server VARCHAR / NVARCHAR 문자열에 줄 바꿈을 삽입하는 방법 (0) | 2020.02.11 |
cURL이 진행률 표시 줄을 표시하지 않게하려면 어떻게합니까? (0) | 2020.02.11 |
node.js에서 한 번에 한 줄씩 파일을 읽습니까? (0) | 2020.02.11 |
PowerShell에서 문자열과 변수를 어떻게 연결합니까? (0) | 2020.02.11 |