SORU
9 Ocak 2012, PAZARTESİ


Ne kadar tehlikeli, gerçekten, tanımlanmamış üzerine düşünmek saçma mı?Javascript:

Her zaman herkes undefined it could be set to "hello", * typeof x == "undefined" *31 bu yüzden bir sözcük değildir O undefined, it's pointed out yerine karşı test bahseder. Bu bana saçma geliyor. Kimse bunu yapsın, ve eğer onlar yaptıysa neden hiç yazmışlar herhangi bir kod... doğru kullanmak için yeterli olur mu?

Yanlışlıkla null *6 set* birisi one example buldum ve bu undefined üzerine olmadığını varsayarak kaçınmak için bir neden olarak verildi. Ama eğer bunu yapmamış olsalardı, hata fark edilmeden gitti ki, o zaman daha iyi nasıl görmek için başarısız.

C herkes yasal #define true false, demek olduğunun farkında ama kimse sana true önlemek 0 == 0 kullanın önerir. Sadece kimse bunu yapabilecek kadar büyük bir pislik olacağını varsayalım, ve eğer yaparlarsa, hiçbir zaman kodlarını yeniden güven.

Başka biri undefined (bilerek) ve atanmış kodunu kırdı, ya da nerede bu hiç ısırılan biri bu varsayımsal bir tehdit daha vardır? Benim kod az miktarda daha okunabilir hale getirmek için şansımı denemek istiyorum. Herkes bunun çok kötü bir fikir olduğunu düşünen var mı?

Tekrar ediyorum, ben . EDİT: ^em>değilkarşı korumak için nasıl soran tanımlanmamış yeniden. Bu hileler 100 kere yazılmış gördüm. Bunun ne kadar tehlikeli hileler kullanmak için soruyorum.

CEVAP
9 Ocak 2012, PAZARTESİ


Hiçbir şekilde kod böyle bir şey yapmaz. Ama asla kullanıyorsunuz wannabe-zeki geliştirici veya bir eklenti/library/script ne yaptığını biliyorsunuz. Diğer tarafta, son derece düşüktür ve modern tarayıcılar izin vermez üzerine undefined, çok kullanıyorsanız bu tür bir tarayıcı geliştirme olursun çabuk fark ederseniz, herhangi bir kod çalışır üzerine.


Ve olsa bile, değil mi sormak için birçok kişi muhtemelen bu soru ne zaman seyir için daha yaygın "nasıl karşı korumak için yeniden undefined" konu, o yüzden vereceğim cevap bu zaten:

Gerçekten çok güzel bir yolu vartanımsızundefined tarayıcı nasıl olursa olsun:

(function(undefined) {
    // your code where undefined is undefined
})();

Bu belirtilen bir argüman her zaman undefined) olur. Ayrıca jQuery kullanırken bazı gerçek argümanlar, örneğin, bu gibi kabul eden bir fonksiyon ile yapabilirsin. Genellikle bu şekilde aklı başında bir ortam sağlamak için iyi bir fikirdir:

(function($, window, undefined) {
    // your code where undefined is undefined
})(jQuery, this);

Sonra bu isimsiz işlev içinde aşağıdaki şeyler doğru olduğundan emin olabilirsiniz:

  • $ === jQuery
  • window === [the global object]
  • undefined === [undefined].

x hiç bir değere (aykırı olmak için . ayarlanmış değişken ancak bazen typeof x === 'undefined' aslında gerekli olduğunu unutmayın: ^em>ayarlayın24**), if(x === undefined) gibi farklı bir şekilde x Okuma, bir hata atmak olacaktır. Bu nesne özellikleri için geçerli değildir ama, eğer y Her zaman bir nesne, if(y.x === undefined) olduğunu biliyorsanız son derece güvenlidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gali B

    Gali B

    1 EYLÜL 2006
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006