SORU
23 HAZİRAN 2011, PERŞEMBE


parseınt, 24, null () = = = 23... bekle, ne?

Tamam, bu yüzden etrafında parseınt ile değerleri henüz başlatılmamış nasıl işleyeceğini görmek için uğraşıyordum ve bu taş sendeledi. Aşağıda herhangi bir taban 24 veya üstü olur.

parseInt(null, 24) === 23 // evaluates to true

IE, Chrome ve Firefox ile test ettim ve hepsi uyarı belirtimi içinde bir yerlerde olmalı diye düşünüyorum, çok doğru. Hızlı bir Google Arama beni ben burada herhangi bir sonuca, birisi açıklayabilir vermedi.

Hatırlıyorum dinleme için bir Crockford konuşma nerede olduğunu söylemesi için typeof null === "object" çünkü bir gözetim neden olan Nesne ve Boş bir yakın aynı tip tanımlayıcı bellek ya da bu doğrultuda bir şey, ama bulamıyorum o videoyu şimdi.

Bunu deneyin: http://jsfiddle.net/robert/txjwP/

EditDüzeltme: daha yüksek bir sayı tabanı farklı sonuçlar döndürüyor, döndürüyor 32 785077
2 düzenleyinZzzzBov: [24...30]:23, 31:714695, 32:785077, 33:859935, 34:939407, 35:1023631, 36:1112745


tl;dr

parseInt(null, 24) === 23 gerçek bir açıklama neden açıklar.

CEVAP
23 HAZİRAN 2011, PERŞEMBE


Dize "null" null dönüştürme ve dönüştürmek için çalışıyor. Radixes 23, dönüştürebilirsiniz sayı Var Yok 0, NaN döndürür. , *9 24* 14 harf, rakam sisteme eklenir. 31, "u", 21 yaşında harfi eklenir ve tüm dize çözülür. 37 artık oluşturulabilir geçerli herhangi bir sayısal dizi var ve NaN döndürülür.

js> parseInt(null, 36)
1112745

>>> reduce(lambda x, y: x * 36   y, [(string.digits   string.lowercase).index(x) for x in 'null'])
1112745

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • mipd1980

    mipd1980

    25 EKİM 2006