la siguiente función está diseñada para implementar la propiedad indexOf
en IE. Si alguna vez has tenido que hacer esto, estoy seguro de que ya lo has visto antes.Operador de JavaScript extraño: expr >>> 0
if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(elt, from){
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++){
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Me pregunto si es común el uso de tres mayor que las señales ya que el autor ha hecho en el cheque longitud inicial?
var len = this.length >>> 0
Hacer esto en una consola simplemente devuelve la longitud del objeto que pase a ella, no verdadera o falsa, lo que me dejó pensando en la finalidad de la sintaxis. ¿Es esta alguna técnica Ninja de alto nivel de JavaScript que no conozco? Si es así, ¡por favor ilumíname!
Guau, me quedé mudo:) Gracias, señor, me han iluminado, le da el toque. – Hacknightly
Dos segundos demasiado lento. Grats! –
Entonces, ¿cuál es exactamente el efecto del uso en el ejemplo 'var len = this.length >>> 0'? Eso parece no hacer nada. –