다른 StackOverflow 게시물 에서이 구문을 보았고 그것이 무엇을하는지 궁금했습니다.
var len = this.length >>> 0;
무엇을 >>>의미합니까?
>>>0 비트로 시프트하더라도 항상 부호 비트를 0으로 설정합니다.
>>>. stackoverflow.com/questions/3081987/…
var length = list.length >>> 0; (당신의 하나와 같은 활용 사례)
답변:
그건의 부호없는 오른쪽 시프트 연산자 . 흥미롭게도 JavaScript에서 서명되지 않은 유일한 비트 연산자 입니다 .
>>> 연산자는 expression1의 비트를 expression2에 지정된 비트 수만큼 오른쪽으로 이동합니다. 왼쪽부터 0이 채워집니다. 오른쪽으로 이동 한 숫자는 삭제됩니다.
의도 된 의미를 무시하면 다음과 같이 사용 된 것을 볼 수 있습니다.
>>> 0 모든 유형을 양의 정수로 변환하는 유일한 연산자라는 점에서 고유합니다.
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
귀하의 예에서 var len = this.length >>> 0, 이것은 this유형 this.length이 무엇이든간에 반복하는 데 사용할 정수 길이를 얻는 방법입니다 .
마찬가지로 ~~x모든 변수를 부호있는 정수로 변환하는 데 사용할 수 있습니다.
>>>비트 연산자, 제로 채우기 오른쪽 시프트 .
>>> 0양수에 대한 유일한 효과는 Math.floor(). 일반적으로 .length속성 (예 :의 Array)이 이미 정수 이기 때문에 귀하의 예제에서 이것이 왜 필요한지 모르겠습니다 .
나는 또한 ~~같은 방식으로 사용 된 약간 더 짧은 것을 보았다 : ~~9.5 == 9; // true.
Math.abs()음수 로 사용할 때 와 같지 않을까요?
>>> 0는 2의 칭찬로 변환 음의 번호를 누른 다음 오른쪽 시프트를 수행합니다. 따라서 -14 >>> 0 == 1073741820. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )
parseInt인가요?