[javascript] 자바 스크립트 3 배 이상

다른 StackOverflow 게시물 에서이 구문을 보았고 그것이 무엇을하는지 궁금했습니다.

var len = this.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 비트로 이동합니다. 수학적으로 0 비트의 이동은 효과가 없어야합니다.

그러나 여기서는 값을 부호없는 32 비트 정수로 변환하는 데 사용됩니다.


답변

>>>비트 연산자, 제로 채우기 오른쪽 시프트 .

>>> 0양수에 대한 유일한 효과는 Math.floor(). 일반적으로 .length속성 (예 :의 Array)이 이미 정수 이기 때문에 귀하의 예제에서 이것이 왜 필요한지 모르겠습니다 .

나는 또한 ~~같은 방식으로 사용 된 약간 더 짧은 것을 보았다 : ~~9.5 == 9; // true.


답변