Odpowiedz
To niepodpisany operator prawej zmiany. W tym przypadku (w przypadku użycia z 0
) zapewnia on, że arr.length
jest liczbą całkowitą lub raczej jest wartością arr.length
jako bezwzględną 32-bitową liczbą całkowitą niepodpisaną. (To znaczy, że nigdy nie NaN
, nigdy negatywne, i nigdy nie ma część dziesiętną.)
Przykłady:
'1' >>> 0: 1
1 >>> 0: 1
'' >>> 0: 0
undefined >>> 0: 0
null >>> 0: 0
1.0∙∙∙01 >>> 0: 1
Porównaj z:
Number('1') : 1
Number(1) : 1
Number('') : 0
Number(undefined): NaN
Number(null) : 0
Number(1.0∙∙∙01) : 1.0∙∙∙01
to po prostu tam, aby zapewnić odpowiednią długość jest używany.
Zapewnia, że .length
jest 32-bitową liczbą całkowitą.
W większości implementacji indeksu tablicy są ograniczone do zakresu 32-bitowym (przynajmniej podczas pracy z Array.prototype
metod i magicznych zachowań .length
).
Tęskniłeś za "... dlaczego miałbym chcieć go użyć?". Jedyny przypadek, w którym można rozważyć, to: * długość * może być ustawiona na wartość niecałkowitą. Ale to [nie może wystąpić] (http://es5.github.com/#x15.4.5.1) w implementacji zgodnej z ECMA-262. Długość ** zawsze ** jest nieujemną liczbą całkowitą. Tak więc odpowiedź brzmi: ** nigdy **. – RobG
Nie powiedziałbym "nigdy". Jest używany, jeśli piszesz shim dla standardowej metody 'Array.prototype', która stara się być zgodna z ECMA-262 (lub tak bliska jak to tylko możliwe), ponieważ standardowe metody dokonują konwersji * To Tointint (lenVal) *. Specyfikacja pozwala również na zastosowanie metod 'Array.prototype' do obiektów" podobnych do tablicowych ". Zapewniłoby to motywację do podkładki do wymuszania właściwej wartości '.length'. –
Jeśli tak było, to wartości -ve muszą być traktowane jako pierwsze, ponieważ ">>>" ma na nie drastyczny wpływ. Ogranicza on również długość długości do nieco mniejszej niż dostępna dla wbudowanej * array.length *, więc jest to zła metoda zapewnienia lub konwersji wartości do nieujemnej liczby całkowitej. – RobG
- 1. Co robi x >>> 0?
- 2. Co robi "drukuj >>" w pythonie?
- 3. Co robi ta linia javascript?
- 4. Co oznacza ">>>" w javascript?
- 5. array.length vs. array.length> 0
- 6. Co znaczy >> i >>> w Javie?
- 7. Co robi ((nazwa struktury *) 0) -> członek) w C?
- 8. Co robi funkcja ExpressionVisitor.Visit <T>?
- 9. Co oznacza ">>>" w języku Java?
- 10. Co robi operator strzałki ("->") w Kotlin?
- 11. Co to jest operator >>> = w JavaScript?
- 12. co robi Maven -> Aktualizuj projekt ... dokładnie?
- 13. Co robi <%== %> w przypadku erb?
- 14. Co robi -> oznacza w celu C
- 15. Co dokładnie robi `subbar {+ {$ _ [1] => $ _ [2]}}`?
- 16. Co robi operator strzałki, "->", w Javie?
- 17. Co oznaczają trzy strzałki (">>>") w pythonie?
- 18. Co oznacza -> _ => w Scala/Lift?
- 19. Co oznacza symbol >> w Haskell
- 20. Co oznacza operator ">> =" w C?
- 21. Co oznacza >> w PHP?
- 22. Różnica między >> i >>> w Scali
- 23. PHP: czy $ this-> something -> ($ this-> foo) -> bar legal?
- 24. Operator ">>>" - do czego służy?
- 25. Konwertuj True-> 1 i False-> 0 w JavaScript?
- 26. Co oznacza() => w C#?
- 27. Co robi ta linia perl z "wybielonego" pliku?
- 28. java.lang.ArrayIndexOutOfBoundsException: 0> = 0 próbuje wypełnić JTable
- 29. co oznacza >> i 1 * w tym ciekawym stwierdzeniu?
- 30. Co oznacza ">" w CSS?
Potrzebuję też pomocy na tagach, aby dodać nazwę tego operatora, ponieważ nie znam jego nazwy. – mithril333221
Kontekst to król ... daj nam trochę. – jondavidjohn
Zwykle nie lubię edytować kodu w pytaniach, ale jestem * dość * pewny, że chodziło o "długość", a nie "długość". –