Niedawno znalazłem jedną linię dziwne w źródłach jQuery (ostatnia wersja 1.9.1, pakiet Trzask, linia 129 funescape
funkcji):Dziwny kod w źródłach 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);
};
Jaki jest powód, aby high !== high
porównania? To oczywiście wygląda na to, że return escaped
nigdy nie zostanie wykonane. Czy może czegoś nie przeoczyłem?
referencyjny:https://github.com/jquery/sizzle/blob/master/sizzle.js#L129
Może bug? która funkcja oczekuje podpisu? Widzę także nieużywany argument '' _'', – redShadow
@redShadow Cóż, '_' jest zrozumiały, ponieważ z jakiegoś powodu (być może w celu zachowania zgodności), autorzy muszą uzyskać tylko drugi argument, oprócz tego zamiast tego użyj 'arguments [1]'. – VisioN
Myślę, że jest tak jak w komentarzu: 'NaN! == NaN' będzie ** zawsze ** zwraca' true' – Alexander