Dadurch ist es möglich, die Funktion (unter Verwendung von call
oder apply
) im strikten Modus auf etwas zuzugreifen, das kein Array ist, während die Spezifikation befolgt wird.
Wenn es sich um eine Instanz von Array
oder ein Array-ähnliches Objekt handelt, ändert sich nichts.
Aber hier, wie diese Linie list
gewährleistet ein Objekt folgt eine Prüfung, dass weder this
null
oder undefined
ist, und wie andere Werte nicht folgende Zugriffe scheitern (außer ganz besondere Fälle, dass Object(this)
nicht lösen würden, wie versagende Accessoren), ich bin mir nicht sicher, ob es wirklich einen Punkt gibt. Vielleicht wurde es vor dem Check gesetzt, oder vielleicht ist es hier nur für spezielle native Objekte. Eine andere Möglichkeit ist, dass sie (zu?) Strikt Schritt für Schritt dem specification folgt und toObject anwenden möchte.
list.length >>> 0
ist besser als || 0
in der Tatsache, es rundet auf die nächst niedrigere positive Ganzzahl (in einem 32 Bit-Bereich). Ich bin mir nicht sicher, warum >>
hier nicht verwendet wurde, da es nicht besser zu sein scheint, bis 4294967295 statt -1 zu iterieren (d. H. Keine Zeit verlieren).
Für den Chevron-Operator ist die beste Antwort, die ich bis jetzt gefunden habe, http://stackoverflow.com/a/1822769/4573999 –