SORU
8 ŞUBAT 2013, Cuma


Bir WordPress kullanmak kaynaklarında garip kod:! = var= var ? x : y;

Son zamanlarda jQuery kaynakları (son sürüm 1.9.1, Cızırtı paketi, 129 funescape fonksiyon hattı) çok garip bir hat buldum:

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 );
};

high !== high karşılaştırma yapmak için sebebi nedir? Belli ki return escaped asla idam olacak gibi görünüyor. Ya bir şey kaçırdım?

Referans:https://github.com/jquery/sizzle/blob/master/sizzle.js#L129

CEVAP
8 ŞUBAT 2013, Cuma


Aslında bu yorum tam üstünde yazdığı gibi:

// NaN olmayan codepoint anlamına gelir

Zorunlu bu karşılaştırma ilk JavaScript gibi NaN davaya gerçekleştirmek için:

NaN === NaN false döndürür.

James Wiseman tarafından işaret olarak da önemli daha net olurdu geliştirici isNaN(high) yerine high !== high kullanılan neden.

Kesinlikle performans dayanmaktadır. test a !== a olduğunu gösteriryirmi kat daha hızlıdaha isNaN(a).

zzzzBov isNaN() üzerine, !== ayrıca daha taşınabilir kullanarak gösterir.

Daha fazla Benjamin Gruenbaum bilgi:

Ayrıca NaN başka bir şey değildir fazlalaştı gibi iyi de unstrict bir anlamda başka bir şey eşit değildir

Ve Jan Dvorak:

Ayrıca not {valueOf:function(){return{}}} kendini eşit oluyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ammine Getahun

    Ammine Getah

    21 HAZİRAN 2011
  • audivila

    audivila

    5 HAZİRAN 2009
  • huyked

    huyked

    28 Mart 2008