Penilaian IE terpendek di masa lalu dibuat oleh fitur yang IE tidak mendukung tab vertikal.
Salinan kode adalah sebagai berikut:
var yaitu =!+"/v1";
Hanya 7bytes yang dibutuhkan! Lihat artikel ini, "32 byte, ehr ... 9, ehr ... 7 !!! Untuk mengetahui apakah browser Anda IE", menceritakan kisah tentang bagaimana orang asing mengurangi penilaian IE dari 32 byte menjadi 7 byte! Tapi catatan ini dipecah oleh orang Rusia pada 8 Januari tahun ini. Sekarang hanya membutuhkan 6 byte! Ini menggunakan perbedaan antara IE dan browser standar dalam memproses array. Untuk browser standar, jika karakter terakhir dalam array adalah koma, mesin JS akan secara otomatis menghapusnya.
Salinan kode adalah sebagai berikut:
var yaitu =!-[1,];
Kode ini disebut kode penilaian IE terpendek di dunia sebelum IE9. Meskipun kodenya pendek, itu memang mengandung banyak pengetahuan javascript dasar. Dalam contoh ini, ketika kode dieksekusi, metode array tostring () akan dipanggil terlebih dahulu. Jalankan [1,]. Tostring () di IE6, 7, 8 akan mendapatkan "1,". Kemudian ekspresi menjadi!-"1,". Kemudian cobalah untuk mengonversi "1," menjadi tipe numerik untuk mendapatkan NAN, dan kemudian mengambil NAN negatif untuk mendapatkan nilai yang masih NAN. Akhirnya Execute! Nan Returns True. Berikut ini adalah meninjau pengetahuan JavaScript yang terlibat dalam kode dengan menguraikan pernyataan ini:
1. Perbedaan parsing array browser
[1,] berarti bahwa array didefinisikan menggunakan array JavaScript literal. Dalam IE6, 7, 8, ada dua elemen array, dan nilai -nilai dalam array adalah 1, tidak ditentukan. Dalam browser standar, yang tidak terdefinisi setelah elemen pertama diabaikan, dan array hanya berisi satu elemen 1.
2. Metode ToString () dari array
Saat memanggil metode ToString () dari objek array, metode tostring () akan dipanggil pada setiap elemen dalam array. Jika nilai elemen nol atau tidak ditentukan, string kosong akan dikembalikan, dan nilai setiap item akan dieja menjadi string yang dipisahkan oleh koma ",".
3. One-Aer Minus Operator
Saat menggunakan operator minus unary, jika nomor operasi adalah tipe numerik, itu akan secara langsung meniadakan nomor operasi. Jika tidak, Anda pertama -tama akan mencoba mengonversi nomor operasi ke jenis numerik. Proses konversi setara dengan menjalankan fungsi angka, dan kemudian negatif hasilnya.
4. Non-operasi logis
Mengembalikan true jika operannya adalah Nan, NULL, atau tidak terdefinisi saat melakukan non-operasi logis.
JavaScript dapat ditulis seperti ini:
Salinan kode adalah sebagai berikut:
var yaitu =!-[1,];
waspada (yaitu);
Jika kita menilai dari perspektif non -e, kita dapat menghemat satu bit, karena ketika kita kompatibel, sebagian besar waktu, yaitu konstruksi mulai. var notie = -[1,];
Salinan kode adalah sebagai berikut:
if (-[1,]) {
waspada ("Ini bukan browser yaitu!");
}kalau tidak{
Peringatan ("Ini IE Browser!");
}
Dari pengetahuan di atas, kita dapat memperoleh kode var ie =!-[1,]; sebenarnya setara dengan var yaitu =! (-angka ([1,]. ToString ())); Nilai dalam IE6/7/8 adalah benar.
Karena IE6/7/8 tidak akan mengabaikan bug [1,]. Tostring (), yaitu, yang Anda dapatkan adalah "1,"; dan -number ([1,]. Tostring ()) adalah -number ("1,") hasilnya adalah nan; Lalu! (-Number ([1,]. Tostring ())) adalah! (Nan) benar. Premis dari segalanya adalah bahwa IE6/7/8 memiliki bug [1,]. Tostring () => "1," sementara browser lain (yang harus sebagian besar dari mereka ~~) adalah [1,]. Tostring () => "1".
Baru -baru ini saya menemukan bahwa seorang teman menggunakan ini untuk meminta pengguna untuk meningkatkan browser mereka
<script>!-[1,] && alert ('Anda menggunakan versi IE6-8 dari browser. Dianjurkan untuk menggunakan Chrome, Firefox, IE9+ untuk menelusuri dengan/n/n!'); </script>