Das kürzeste IE -Urteil in der Vergangenheit wurde durch das Feature vorgenommen, dass der IE keine vertikalen Registerkarten unterstützt.
Die Codekopie lautet wie folgt:
var ie =!+"/v1";
Nur 7bytes werden benötigt! Siehe diesen Artikel "32 Bytes, EHR ... 9, EHR ... 7 !!! Um zu wissen, ob Ihr Browser IE ist", erzählt die Geschichte, wie Ausländer das Urteil über IE von 32 Bytes auf 7 Bytes reduziert haben! Dieser Rekord wurde jedoch am 8. Januar dieses Jahres von einem Russen gebrochen. Jetzt dauert es nur noch 6 Bytes! Es verwendet den Unterschied zwischen IE und Standardbrowsern in der Verarbeitung von Arrays. Bei Standard -Browsern wird es der JS -Motor automatisch entfernt, wenn das letzte Zeichen im Array ein Komma ist.
Die Codekopie lautet wie folgt:
var ie =!-[1,];
Dieser Code wurde vor IE9 als kürzester IE -Urteilscode der Welt bezeichnet. Obwohl der Code kurz ist, enthält er viele grundlegende JavaScript -Kenntnisse. In diesem Beispiel wird die Methode des Arrays toString () zuerst aufgerufen, wenn der Code ausgeführt wird. Führen Sie [1,] toString () in IE6, 7, 8 "1,". Dann wird der Ausdruck!-"1". Versuchen Sie dann, "1" in einen numerischen Typ umzuwandeln, um Nan zu erhalten, und nehmen Sie dann eine negative NAN, um den Wert noch Nan zu erhalten. Endlich ausführen! Nan kehrt wahr zurück. Das Folgende ist die Überprüfung des in den Code beteiligten JavaScript -Wissens durch Zerlegen dieser Erklärung:
1. Der Unterschied des Browser -Array -Literal -Parsens
[1,] bedeutet, dass ein Array unter Verwendung von JavaScripts Array Literal definiert wird. In IE6, 7, 8 gibt es zwei Elemente des Arrays, und die Werte im Array sind 1 undefiniert. In einem Standardbrowser wird das Undefinierte nach dem ersten Element ignoriert, und das Array enthält nur ein Element 1.
2. Die Methode toString () des Arrays
Beim Aufrufen der Methode toString () des Array -Objekts wird die Methode toString () jedes Element im Array aufgerufen. Wenn der Wert des Elements null oder undefiniert ist, wird eine leere Zeichenfolge zurückgegeben und der Wert jedes Elements in eine durch Kommas getrennte Zeichenfolge geschrieben ".
3. One-Ary Minus-Betreiber
Bei Verwendung des Unary Minus -Operators negiert bei der Betriebsnummer ein numerischer Typ direkt die Betriebsnummer. Andernfalls versuchen Sie zunächst, die Betriebsnummer in einen numerischen Typ umzuwandeln. Der Konvertierungsprozess entspricht der Ausführung der Zahlenfunktion und negativ das Ergebnis.
4. Logische Nichtoperation
Gibt true zurück, wenn der Operand bei der Durchführung logischer Nichtoperationen NAN, NULL oder undefiniert ist.
JavaScript kann so geschrieben werden:
Die Codekopie lautet wie folgt:
var ie =!-[1,];
Alarm (dh);
Wenn wir aus einer Nicht-I-Perspektive beurteilen, können wir ein bisschen sparen, denn wenn wir kompatibel sind, starten Sie die meiste Zeit, dh und Nicht-IE-Konstruktion. var notie = -[1,];
Die Codekopie lautet wie folgt:
if (-[1,]) {
Alarm ("Das ist kein IE -Browser!");
}anders{
Alarm ("Dies ist IE Browser!");
}
Aus dem obigen Wissen können wir erhalten, dass der Code var IE =!-[1,]; ist eigentlich äquivalent zu var IE =! (-Nummer ([1,] toString ())); Der Wert in IE6/7/8 ist wahr.
Weil IE6/7/8 den Fehler nicht ignoriert [1,] toString (), das heißt, was Sie bekommen, ist "1,"; und -Number ([1,]. tostring ()) ist -number ("1,") Das Ergebnis ist nan; Dann! (-Nummer ([1,]. ToString ()) ist! (Nan) ist wahr. Die Prämisse von allem ist, dass IE6/7/8 den Fehler [1,] toString () => "1" hat, während andere Browser (das die meisten von ihnen sein sollten ~~) [1,] tostring () => "1".
Vor kurzem stellte ich fest, dass ein Freund dies benutzte, um Benutzer zu veranlassen, seinen Browser zu verbessern
<Script>!-[1,] && alert ('Sie verwenden IE6-8-Version des Browsers. Es wird empfohlen, Chrome, Firefox, IE9+ zum Durchsuchen mit/n/n!'); </script> zu verwenden