(![] [])[ []]... 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
@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)).
Nasıl tortoise svn olmayan özyinelemel...
Jenkins ihracat/ithalat işleri...
Zincirleme birden fazla Hadoop MapRedu...
Nasıl Jenkins işleri zamanlamak için...
Renk gerçek renkleri karıştırma gibi i...