Lasst uns die Konsole verwenden, um unsere Antwort zu bekommen vorausgesetzt, wir wissen nicht, was das alles bedeutet, die Eingabe
[] + ""
in den Konsolen-Ausgänge ""
gerade dabei (!!+[])
gibt den Boolean false
. Wenn Sie den Booleschen Wert false
an ""
anhängen, erhalten Sie die Zeichenfolge false
wegen der Typzwingung.
Wie erwartet, gibt (!!+[]+"")
Ausgaben "false"
an die Konsole.
In JavaScript können Sie sich Strings wie ein Array von Zeichen vorstellen und mit der Array-Notation auf ihr Zeichen zugreifen.
In ((!!+[]+"")[+!![]])
können Sie also die äußersten Klammern entfernen, um es einfacher zu machen. Jetzt haben wir (!!+[]+"")[+!![]]
in dem der erste Teil in ()
die Zeichenfolge "false"
zurückgibt, und der nächste Teil in []
greift auf ein Zeichen der Zeichenfolge "false"
. Sie können jetzt wetten, dass +!![]
irgendwie 1 zurückgibt, da "false"[1]
gleich "a"
ist.
Nun lasst uns herausfinden, wie +!![]
gleich 1
:
[]
ist ein leeres Array, das Sie als 0
denken können, welche true
in JavaScript wäre (weil "in JavaScript nichts 'real' ist true
") , so! [] ist false
und !![]
ist true
.
Jetzt sind wir mit +true
, die nur Kurzbezeichnung für true
zu einer Zahl, die 1
sein würde.Jetzt können Sie sehen, wie +!![]
zu 1
auswertet und Sie verstehen (hoffentlich), wie dieses verschleierte Stück Code funktioniert!
Das Ganze kann vereinfacht werden, um '("false"[1])'. Jetzt wissen Sie, warum das Ergebnis "a" ist. – abhishekkannojia
a ist der zweite Buchstabe von false. Clever ^^ – WayToDoor
[siehe hier] (https://github.com/aemkei/jsfuck/blob/master/jsfuck.js) –