SORU
13 Kasım 2010, CUMARTESİ


(![] [])[ []]... Bu işleri niçin

alert((![] [])[ []] (![] [])[ ! []] ([![]] [][[]])[ ! [] [ []]] (![] [])[! [] ! []]);

Bu kod çıktısı: fail. Neden?

Yol, (![] [])[ ! []] = 'false'[0], değil mi?. Ama neden ! [] == 1 neden 10* *ve ?

CEVAP
13 Kasım 2010, CUMARTESİ


@Mauricio yorumladı (![] [])[ []] "f" (ilk char ""), false, (![] [])[ ! []])"", vs... bir

Nasıl çalışır?

İlk karakteri incelemek, '': . f izin

(![] [])[ []]; // 'f'

İlk bölümde ifade arasında parantez—tarafından bestelendi ![] [], ilk işlenen toplama işareti ![] ve üretecek false, çünkü bir dizi nesne olarak başka bir Nesne örneğitruthyve Mantıklı bir uygulama (!) Tekli operatör DEĞİL, örneğin değeri false, üretir.

![]; // false, it was truthy
!{}; // false, it was truthy
!0;  // true, it was falsey
!NaN;  // true, it was falsey

Sonra, elimizdeki ikinci ifadenin eklenmesi, boş bir Dizi [], Bu yapılan sadece dönüştürmek false değeri Dize, çünkü dize temsili boş bir dizidir sadece boş bir dize eşdeğerdir:

false []; // "false"
false ''; // "false"

Son bölümü, sonra parantez köşeli parantez çifti, özellik erişimci ve Tekli Artı Operatörü boş bir dizi için yeniden uygulanması ile oluşan bir ifade alırlar.

Tekli Artı Operatörü ne yapar, örneğin tipi dönüşüm, Number,:

typeof  "20"; // "number"

Bir kez daha, bu uygulanan boş bir Dizi, ve bana cevap ver, Dize gösterimini bir Dizi boş bir dize, dönüştürme zaman boş bir dize olarak dönüştürülür sıfır:

 []; // 0, because
 [].toString(); // 0, because
 ""; // 0

Biz "ifadesi bazı adımlar: . bu nedenle kod çözme

(![] [])[ []];
(false [])[ []];
(false '')[ []];
(false '')[0];
('false')[0];  // "f"

String ayraç kullanarak karakterleri erişim ECMA 3 parçası olduğunu unutmayın. Şartname, (charAt yöntemi var bu yüzden) Edition.

Ancak bu tür bir "dizin özellikleri" temsil eden bir karakter dizesi vardı üzerinde standart ECMA 5, hatta daha öncesinden standardizasyon özellik mevcut güzel bir sayı tarayıcılar (hatta IE8 (standartlar modu)).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cyriak

    cyriak

    29 Mart 2006
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006
  • KIT KAT

    KIT KAT

    3 EKİM 2005