Recentemente ho trovato una riga strano nelle fonti jQuery (ultima versione 1.9.1, pacchetto Sizzle, linea di funzione 129 funescape
):Codice strano in sorgenti jQuery: var! == var? x: y;
funescape = function(_, escaped) {
var high = "0x" + escaped - 0x10000;
// NaN means non-codepoint
return high !== high ? // <--- LINE 129
escaped :
// BMP codepoint
high < 0 ?
String.fromCharCode(high + 0x10000) :
// Supplemental Plane codepoint (surrogate pair)
String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
};
Qual è la ragione per fare high !== high
confronto? Ovviamente sembra che return escaped
non venga mai eseguito. O mi manca qualcosa?
Riferimento:https://github.com/jquery/sizzle/blob/master/sizzle.js#L129
forse un bug? qual è la firma prevista della funzione? Vedo anche un argomento '' _'' inutilizzato, ... – redShadow
@redShadow Beh, '_' è comprensibile, dal momento che per qualche ragione (possibilmente per preservare la compatibilità) gli autori devono ottenere solo il secondo argomento, oltre a usa invece 'arguments [1]'. – VisioN
Penso che sia come dice il commento, 'NaN! == NaN' sarà ** sempre ** restituirà' true' – Alexander