Hallo, dies ist der letzte Teil der Analyse der Fragen von unserem Stand.
Reagieren Sie hier auf Fragen.
Analyse der ersten vier Runden hier .

Hier werden Fragen zu Themen praktisch nicht gruppiert, wir analysieren alles einzeln.
Lass uns gehen:
Was wird das Ergebnis sein?
let i = 0; let a = 1; for (; a >= 0; i++) { a -= 0.1; } console.log(i); a) 1 b) 11 c) d) 10
Antwort + Analyseb) 11
Hier ist alles ganz einfach. Dies ist eher eine Frage der Achtsamkeit. Der Zyklus wird 11 mal ausgeführt, weil Wir sind nicht streng
größer als >
und größer als oder gleich >=
.
Was wird das Ergebnis sein?
{} + []; a) 0 b) null c) '[object Object]' d) NaN
Antwort + Analysea) 0
Der Trick dabei ist, dass {}
nicht als Objekt, sondern als leerer Codeblock interpretiert wird. Daher wird der Ausdruck in +[]
konvertiert, und dies ist 0
, weil +
bevor der Wert ihn in eine Zahl umwandelt. Ich möchte darauf hinweisen, dass, wenn der Code als console.log({} + []);
, dann wird es [object Object]
, weil hier wird {}
als Objekt interpretiert.
Was wird das Ergebnis sein?
[] + {};
a) 0
b) null
c) '[Objekt Objekt]'
d) NaN
Antwort + Analysec) '[Objekt Objekt]'
Hier werden beide Operanden gemäß den Regeln auf eine Zeichenfolge in einem leeren Array reduziert - dies ist eine leere Zeichenfolge und im [object Object]
Was wird dieser Code ausgeben?
let response = { data: '', errors: { code: 403 } }; console.log(typeof response.data.link); a) undefined b) object c) string d) function
Antwort + Analysed) Funktion
Der String-Prototyp verfügt über eine Link- Methode, sodass die richtige Antwort die function
Was wird dieser Code ausgeben?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Antwort + Analyseb) FUS DAH! RO
Hier lösen wir den click
programmgesteuert aus und er gelangt in den Aufrufstapel, der erste Handler wird ausgelöst - wir FUS
, wir gelangen zum zweiten - wir fügen RO
zur Warteschlange hinzu, weil click
immer noch auf den Stapel - rufen Sie kein Versprechen an. Wir kommen zum nächsten Handler - Ausgabe DAH!
. click
funktioniert, die Warteschlange ist leer, das Versprechen wird ausgelöst.
Was wird dieser Code anzeigen, wenn auf eine Schaltfläche geklickt wird?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Antwort + Analysea) FUS RO DAH!
Hier klickt der Benutzer auf die Schaltfläche, sodass kein click
auf den Stapel erfolgt, und im zweiten Handler funktioniert das Versprechen sofort.
Was wird dieser Code ausgeben?
console.log(typeof Function````); a) TypeError b) SyntaxError c) 'function' d) 'undefined'
Antwort + Analysed) "undefiniert"
Wenn Vorlagenliterale nach dem Funktionsnamen verwendet werden, wird sie mit einem Array aufgerufen, wobei ein übergebener Wert und ein Array mit einem raw
sind. Function
, wie new Function
- Funktionskonstruktor. Wenn wir eine leere Zeichenfolge an sie übergeben, erhalten wir eine Funktion der Form (){}
. Mit jedem Argument, das wir sie nennen, wird sie undefined
. Hier wird sie mit einem Array aufgerufen - ['', raw: ['']]
. Dies entspricht in etwa der Function('')('')
Was wird dieser Code ausgeben?
function f(a, b, c) { 'use strict'; return f.length; } console.log(f(100, 2)); a) undefined b) 2 c) 3 d)
Antwort + Analysec) 3
Vollständige Beschreibung mit MDN :
Die Eigenschaft length ist eine Eigenschaft eines Funktionsobjekts und gibt an, wie viele Argumente die Funktion erwartet, dh wie viele formale Parameter. Dieser Betrag enthält keine Restparameter.
Was wird das Ergebnis sein?
const dict = {}; dict[[1]] = 2; dict[dict] = 3; dict[1 / 0] = 4; a) {'1': 2, '[object Object]': 3, 'Infinity': 4} b) Assignment to constant variable c) {'[1]': 2, 'dict': 3, '1/0': 4} d) {'1': 4, '[object Object]': 3}
Antwort + Analysea) {'1': 2, '[Objekt Objekt]': 3, 'Unendlichkeit': 4}
Fehler Die Assignment to constant variable
erfolgt hier nicht const
erlaubt keine Änderung des Links, aber Sie können das Objekt ändern. Alle Objektschlüssel müssen Zeichenfolgen sein, daher wird für jeden von ihnen toString
aufgerufen. Das Array wird auf 1
, das Objekt auf [object Object]
, und wenn es durch Null geteilt wird, wird Infinity
erhalten.
Was wird dieser Code ausgeben?
console.log(!![] > [], ![] == []); a) false false b) false true c) true true d) true false
Antwort + Analysec) wahr wahr
Vergleiche > >= <= <
- verursachen einen arithmetischen Vergleich. Zuerst wandeln wir das Array in einen Booleschen Wert um und werden wahr, und dann erhalten wir einen Vergleich 1> 0, der offensichtlich wahr ergibt. Im zweiten Teil der Frage wandeln wir das Array in false
, dann wird false
in 0
, und das Array wird in ein Grundelement umgewandelt. Wir erhalten eine leere Zeichenfolge ''
, und sie sind gleich.
Damit ist unsere Analyse abgeschlossen. Vielen Dank für Ihre Aufmerksamkeit!