Inhaltsverzeichnis
Vorwort
Wissen erforderlich, um dieses Problem zu lösen
um dieses Problem zu lösen Problem ([] [[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]
Heim Web-Frontend js-Tutorial schwach! Interviewfrage console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) gibt was aus

schwach! Interviewfrage console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) gibt was aus

Apr 12, 2023 pm 03:29 PM
前端面试题

Dieser Artikel vermittelt Ihnen relevantes Wissen über das Frontend. Er teilt Ihnen hauptsächlich eine Interviewfrage zu console.log mit. Ich hoffe, dass er für alle hilfreich ist.

Vorwort

Interviewfragen console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) Was ist die Ausgabe? Ich bin während des Interviews auf diese Interviewfrage gestoßen, in der es um Typkonvertierung, implizite Typkonvertierung, Operatoren usw. ging. Es ist nicht so, dass ich nicht weiß, wie ich sie beantworten soll Ich lese gerade die Frage. Es handelt sich jedoch tatsächlich um eine Interviewfrage, also versuchen Sie, sie zu lösen.

schwach! Interviewfrage console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) gibt was aus

Wissen erforderlich, um dieses Problem zu lösen

  • "+": unary + führt die gleiche Konvertierung durch wie die Verwendung von Number()
  • Wenn das +-Zeichen die Addition zweier Zahlen ist, ist einer der Operanden ein Objekt oder ein value oder Boolean, rufen Sie ihre toString-Methode auf, um sie in einen String zu konvertieren
  • „!“: Kein Operator, diese Operation gibt immer einen Booleschen Wert zurück
  • „!!“: erzwungene Konvertierung in einen Booleschen Wert

um dieses Problem zu lösen Problem ([] [[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]

Zuerst müssen wir die Ausführungsreihenfolge klären

Führen Sie zuerst ([][[]] + []) aus, führen Sie zuerst den darin enthaltenen [][[]] aus und berechnen Sie dann [ ][[]], es führt tatsächlich den Wert mit Schlüssel [] im leeren Array [] aus([][[]] + []),先执行里面的[][[]],在计算 [][[]]时,其实就是执行[]空数组里面key为[]的值

  1. 首先,JavaScript 引擎解析空数组 []。空数组没有任何元素。
  2. 接下来,引擎尝试使用 [] 作为属性名来访问空数组的属性。在这种情况下,由于 [] 本身是一个数组,JavaScript 引擎会尝试将其转换为字符串。由于 [] 为空数组,转换成字符串后结果为一个空字符串 ""
  3. 最后,引擎会尝试访问空数组中名为 "" 的属性。由于这个属性并不存在于空数组中,所以结果为 undefined

所以,执行 [][[]] 的结果是 undefined

那么([][[]] + [])接下去执行就是(undefined + []) 将会执行隐式类型转换,将undefined转换为字符串"undefined",将[]转为“”,然后将两个字符串拼接在一起。因此,结果是"undefined"

其次执行[+!![]],!![]空数组转布尔值为true,一元操作服+会转为数值,+true就是将true转换为数字1。得到的结果就是[1]。于是我们就可以得到([][[]] + [])[+!![]]undefined[1]这个的结果就是字符串'n'

接下来就是执行([]+{})[+!![]+ + !![]] 这一部分,再将这部分的结果和上面的结果相加

  1. 先执行([]+{}),  计算[]+{}。这将触发隐式类型转换,将空对象转换为字符串"[object Object]",然后将两个字符串拼接在一起。因此,结果是'[object Object]'

  2. 再执行[+!![]+ + !![]], +!![]前面有解析过得到的是1,所以这一部分执行过后得到的是数值1相加1+1,得到的结果是[2]

  3. 那么这两部分合起来就是'[object Object]'[2],就是字符串的第三个值b

最后将前面部分得到的结果 'n' 和后面部分得到的结果 'b' 相加,得到最后的结果'nb'

总结:这个题目一时解决不了的话,可能有以下几个原因,第一个就是不太清楚执行顺序,其次就是不太理解[][[]]这个,实际上就是获取空数组key为[]的值,又因为数组的key为字符串,所以会将[]转为''

    Zuerst analysiert die JavaScript-Engine das leere Array []. Ein leeres Array enthält keine Elemente.

    Als nächstes versucht die Engine, auf die Eigenschaften des leeren Arrays zuzugreifen, indem sie [] als Eigenschaftsnamen verwendet. Da [] in diesem Fall selbst ein Array ist, versucht die JavaScript-Engine, es in einen String umzuwandeln. Da [] ein leeres Array ist, ist das Ergebnis nach der Konvertierung in einen String ein leerer String "".
    Abschließend versucht die Engine, auf die Eigenschaft mit dem Namen "" im leeren Array zuzugreifen. Da diese Eigenschaft im leeren Array nicht vorhanden ist, ist das Ergebnis undefiniert.

Das Ergebnis der Ausführung von [][[]] ist also undefiniert. 🎜🎜Dann ist die nächste Ausführung von ([][[]] + []) (undefiniert + []), die eine implizite Typkonvertierung durchführt und konvertiert Konvertieren Sie undefiniert in die Zeichenfolge „undefiniert“, konvertieren Sie [] in „“ und verketten Sie dann die beiden Zeichenfolgen miteinander. Daher ist das Ergebnis "undefiniert"🎜🎜🎜Dann führen Sie [+!![]] aus, das leere Array !![] wird in einen booleschen Wert von true konvertiert und Der unäre Operationsdienst + wird in einen numerischen Wert konvertiert, +true bedeutet, true in die Zahl 1 umzuwandeln. Das Ergebnis ist [1]. Wir können also ([][[]] + [])[+!![]] als undefiniert[1] erhalten. Das Ergebnis ist die Zeichenfolge 'n'🎜🎜🎜Der nächste Schritt besteht darin, ([]+{})[+!![]+ + !![]] auszuführen und dann Hinzufügen die Ergebnisse dieses Teils zu den obigen Ergebnissen🎜
    🎜🎜Führen Sie zuerst ([]+{}) aus und berechnen Sie []+{}. Dadurch wird eine implizite Typkonvertierung ausgelöst, bei der das leere Objekt in die Zeichenfolge "[object Object]" konvertiert und die beiden Zeichenfolgen dann miteinander verkettet werden. Daher ist das Ergebnis '[object Object]'. 🎜🎜🎜🎜Führen Sie [+!![]+ + !![]] erneut aus. +!![] wurde zuvor analysiert und hat 1 erhalten, sodass der nach der Ausführung dieses Teils erhaltene Wert a ist numerischer Wert Die Addition von 1 zu 1+1 ergibt [2]. 🎜🎜🎜🎜Dann sind die beiden Teile zusammen '[object Object]'[2], was der dritte Wert b der Zeichenfolge ist🎜🎜
🎜Schließlich wird der vorherige Teil erhalten Das Ergebnis 'n' wird zum im folgenden Teil erhaltenen Ergebnis 'b' addiert, um das Endergebnis 'nb'🎜🎜Zusammenfassung zu erhalten : Wenn diese Frage im Moment nicht gelöst werden kann, kann dies mehrere Gründe haben. Der erste ist, dass die Ausführungsreihenfolge nicht klar ist, und der zweite ist, dass der [][[]] nicht klar ist Tatsächlich geht es darum, den leeren Array-Schlüssel als Wert von [] zu erhalten, und da der Schlüssel des Arrays eine Zeichenfolge ist, wird [] in konvertiert '', daher kann es nicht gefunden werden. Rückgabe undefiniert. Kennen Sie diese Interviewfrage jetzt? 🎜🎜Empfohlenes Lernen: „🎜Web-Frontend-Entwicklungsvideo-Tutorial🎜“🎜🎜🎜

Das obige ist der detaillierte Inhalt vonschwach! Interviewfrage console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) gibt was aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Apr 04, 2025 pm 02:42 PM

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Wer bekommt mehr Python oder JavaScript bezahlt? Wer bekommt mehr Python oder JavaScript bezahlt? Apr 04, 2025 am 12:09 AM

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Apr 09, 2025 am 12:07 AM

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Wie fusioniere ich Arrayelemente mit derselben ID mit JavaScript in ein Objekt? Wie fusioniere ich Arrayelemente mit derselben ID mit JavaScript in ein Objekt? Apr 04, 2025 pm 05:09 PM

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Wie kann man Parallax -Scrolling- und Element -Animationseffekte wie die offizielle Website von Shiseido erzielen?
oder:
Wie können wir den Animationseffekt erzielen, der von der Seite mit der Seite mit der offiziellen Website von Shiseido begleitet wird? Wie kann man Parallax -Scrolling- und Element -Animationseffekte wie die offizielle Website von Shiseido erzielen? oder: Wie können wir den Animationseffekt erzielen, der von der Seite mit der Seite mit der offiziellen Website von Shiseido begleitet wird? Apr 04, 2025 pm 05:36 PM

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

Der Unterschied in der Konsole.log -Ausgabeergebnis: Warum unterscheiden sich die beiden Anrufe? Der Unterschied in der Konsole.log -Ausgabeergebnis: Warum unterscheiden sich die beiden Anrufe? Apr 04, 2025 pm 05:12 PM

Eingehende Diskussion der Ursachen des Unterschieds in der Konsole.log-Ausgabe. In diesem Artikel wird die Unterschiede in den Ausgabeergebnissen der Konsolenfunktion in einem Code analysiert und die Gründe dafür erläutert. � ...

Ist JavaScript schwer zu lernen? Ist JavaScript schwer zu lernen? Apr 03, 2025 am 12:20 AM

JavaScript zu lernen ist nicht schwierig, aber es ist schwierig. 1) Verstehen Sie grundlegende Konzepte wie Variablen, Datentypen, Funktionen usw. 2) Beherrschen Sie die asynchrone Programmierung und implementieren Sie sie durch Ereignisschleifen. 3) Verwenden Sie DOM -Operationen und versprechen Sie, asynchrone Anfragen zu bearbeiten. 4) Vermeiden Sie häufige Fehler und verwenden Sie Debugging -Techniken. 5) Die Leistung optimieren und Best Practices befolgen.

So implementieren Sie die Funktion des Ziell- und Drop-Einstellungsfunktion, ähnlich wie bei VSCODE in der Front-End-Entwicklung? So implementieren Sie die Funktion des Ziell- und Drop-Einstellungsfunktion, ähnlich wie bei VSCODE in der Front-End-Entwicklung? Apr 04, 2025 pm 02:06 PM

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...

See all articles