


Die anspruchsvollsten und schwierigsten technischen Javascript-Interviewfragen mit Lösungen.
Hallo! Ich bin Vishal Tiwari und werde Ihnen einige herausfordernde Javascript-Interviewfragen stellen.
1. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe:Objekt
Erklärung: Dies ist eine bekannte Eigenart in JavaScript. Der Operator „typeof“ gibt „Objekt“ zurück, wenn er auf null angewendet wird, auch wenn null kein Objekt ist. Dieses Verhalten ist auf die Implementierung von JavaScript zurückzuführen und wurde aus Gründen der Abwärtskompatibilität beibehalten.
2. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
Ausgabe:false
Erklärung: Aufgrund der Art und Weise, wie Gleitkomma-Arithmetik in JavaScript (und vielen Programmiersprachen) funktioniert, entspricht 0,1 0,2 nicht genau 0,3. Stattdessen ergibt sich ein Wert von 0,30000000000000004, was dazu führt, dass der Vergleich „falsch“ zurückgibt.
3. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
Ausgabe: 123
Erklärung: Wenn Sie versuchen, eine Eigenschaft für ein Objekt festzulegen, indem Sie ein anderes Objekt als Schlüssel (a[b]) verwenden, konvertiert JavaScript das Objekt b in eine Zeichenfolge, was zu „[object Object ]". Sie setzen also im Wesentlichen die Eigenschaft „[object Object]“ auf 123, und wenn Sie a[b] protokollieren, wird 123 zurückgegeben.
4. Was wird die Ausgabe des folgenden Codes sein?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Antwort:
Ausgabe: 11
Erklärung: Wenn Sie einem Index einen Wert zuweisen, der größer als die aktuelle Länge des Arrays ist (wie arr[10] = 11), erstellt JavaScript „leere Slots“ im Array für Indizes von 3 bis 9. Die Längeneigenschaft des Arrays spiegelt jedoch den höchsten Index plus eins wider, der in diesem Fall 11 ist.
5. Was wird die Ausgabe des folgenden Codes sein?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Antwort:
Ausgabe:
- Erstes console.log: 30
- Zweites console.log: 300
- Drittes console.log: 3000
Erklärung:
- obj.sum() verwendet den this-Kontext von obj, addiert also 10 und 20 und gibt 30 zurück.
- obj.sum.call({ x: 100, y: 200 }) verwendet die Call-Methode, um dies in ein neues Objekt mit x- und y-Werten von 100 bzw. 200 zu ändern und 300 zurückzugeben.
- obj.sum.apply({ x: 1000, y: 2000 }) macht dasselbe mit apply und gibt 3000 zurück.
6. Was wird die Ausgabe des folgenden Codes sein?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Antwort:
Ausgabe:
- Erstes console.log: '11'
- Zweites console.log: 0
Erklärung:
- In 1 „1“ führt JavaScript eine Typerzwingung durch und wandelt die Zahl 1 in eine Zeichenfolge um, was zu „11“ führt.
- In 1 - '1' wandelt JavaScript die Zeichenfolge '1' in eine Zahl um, was zu 1 - 1 führt, was 0 entspricht.
7. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe: Die Ausgabe hängt vom Kontext ab, in dem foo aufgerufen wird. Wenn es sich jedoch im globalen Kontext befindet, wird das globale Objekt protokolliert (Fenster in Browsern oder global in Node.js).
Erklärung: In Pfeilfunktionen ist dies lexikalisch gebunden, was bedeutet, dass dieser Wert aus dem umgebenden Kontext verwendet wird. Wenn foo im globalen Bereich aufgerufen wird, verweist dies auf das globale Objekt.
8. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
Ausgabe:
- Erstes console.log: 1
- Zweites console.log: 2
- Drittes console.log: 2
- Viertes console.log: 1
- Fünftes console.log: 1
Erklärung: Die Funktion „createCounter“ erstellt einen Abschluss, der seine eigene Zählvariable verwaltet. Jede Methode (Inkrementieren, Dekrementieren, getCount) greift auf dieselbe Zählvariable zu und ändert sie, wodurch ein konsistentes Verhalten gewährleistet wird.
9. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
Ausgabe: [99, 2, 3]
Erklärung: In JavaScript sind Arrays (wie alle Objekte) Referenztypen. Wenn b a zugewiesen wird, verweisen beide Variablen auf dasselbe Array im Speicher. Somit wirkt sich die Änderung von b auf a aus.
10. Was wird die Ausgabe des folgenden Codes sein?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Antwort:
Ausgabe: 3
Erklärung: In diesem Beispiel hat die innere Funktion eine eigene a-Variable, die die a-Variable in der äußeren Funktion überschattet. Wenn console.log(a) innerhalb von Inner aufgerufen wird, bezieht es sich auf das in Inner definierte a, das 3.
ist11. Was wird die Ausgabe des folgenden Codes sein?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Antwort:
Ausgabe: { a: 1, b: 3, c: 4 }
Erklärung: Die Methode Object.assign() kopiert die Werte aller aufzählbaren Eigenschaften von einem oder mehreren Quellobjekten (obj1 und obj2) in ein Zielobjekt (ein leeres Objekt {}). Wenn dieselbe Eigenschaft in mehreren Quellobjekten vorhanden ist, hat die letzte Eigenschaft Vorrang. Daher überschreibt b: 3 aus obj2 b: 2 aus obj1.
12. Was wird die Ausgabe des folgenden Codes sein?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Antwort:
Ausgabe:undefiniert
Erklärung: JavaScript fügt nach der Return-Anweisung automatisch ein Semikolon ein, wenn ein Zeilenumbruch vorliegt. Daher wird es als return; interpretiert, was undefiniert zurückgibt. Um das Objekt zurückzugeben, sollten Sie die öffnende geschweifte Klammer { in derselben Zeile wie das Schlüsselwort return einfügen.
13. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe:undefiniert
Erklärung: Die Variable x innerhalb der Funktion foo wird angehoben, aber erst initialisiert, wenn die Zuweisung var x = 2; ist. Wenn also console.log(x); Wird ausgeführt, ist das lokale x deklariert, aber noch nicht zugewiesen, sodass es undefiniert ausgibt.
14. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
Ausgabe: 99
Erklärung: Sowohl a als auch b verweisen auf dasselbe Array im Speicher. Wenn Sie b[0] ändern, ändern Sie auch a[0], da beide auf dasselbe Array verweisen.
15. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
- Erstes console.log: „123“
- Zweites console.log: „33“
Erklärung:
- In 1 „2“ „3“ wandelt JavaScript 1 in eine Zeichenfolge um und verkettet sie, was zu „12“ und dann „123“ führt.
- In 1 2 „3“ wertet JavaScript zunächst 1 2 aus, was 3 (einer Zahl) entspricht, und verkettet dann „3“, was zu „33“ führt.
16. Was wird die Ausgabe des folgenden Codes sein?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Antwort:
Ausgabe: []
Erklärung: Wenn Sie die Längeneigenschaft eines Arrays auf 0 setzen, wird das Array effektiv gelöscht. Daher ist arr jetzt ein leeres Array.
17. Was wird die Ausgabe des folgenden Codes sein?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Antwort:
Ausgabe: 2
Erklärung: Die innere Funktion verfügt beim Aufruf über eine eigene a-Variable, die 2 ist. Wenn Sie innerFunc() aufrufen, protokolliert sie 2, da sie sich auf die lokale Variable a innerhalb von inner bezieht.
18. Was wird die Ausgabe des folgenden Codes sein?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Antwort:
Ausgabe: 3
Erklärung: Die C-Methode wird für das Objekt aufgerufen, daher bezieht sich dies innerhalb der Methode auf das Objekt. Somit wird die Summe von obj.a und obj.b ausgegeben, die 3 ist.
19. Was wird die Ausgabe des folgenden Codes sein?
const foo = () => { console.log(this); }; foo(); // Output?
Antwort:
- Erstes console.log: false
- Zweites console.log: true
Erklärung:
- Die erste Anweisung gibt aufgrund von Problemen mit der Gleitkommagenauigkeit „falsch“ zurück (0,1 0,2 entspricht 0,30000000000000004).
- Die zweite Anweisung rundet 0,1 0,2 mit toFixed(1) auf 0,3 und wandelt es zurück in eine Zahl um, was zu einem Vergleich von 0,3 === 0,3 führt, was wahr ist.
20. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe: globales Objekt (oder undefiniert im strikten Modus)
Erklärung: Im nicht-strikten Modus ist der Wert davon innerhalb einer im globalen Kontext aufgerufenen Funktion das globale Objekt (d. h. Fenster in Browsern oder global in Node.js). Im strikten Modus wäre dies undefiniert.
21. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
- Erstes console.log: 2
- Zweites console.log: 1
Erklärung:
- Object.assign(obj3, obj2) kopiert Eigenschaften von obj2 nach obj3, sodass obj3.a zu 2 wird.
- obj3.__proto__ bezieht sich auf obj1, das die Eigenschaft a mit dem Wert 1 hat.
22. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
Ausgabe: 3
Erklärung: In der inneren Funktion bezieht sich a auf die in der äußeren Funktion definierte Variable. Wenn inner aufgerufen wird, wird a von 2 auf 3 erhöht und protokolliert.
23. Was wird die Ausgabe des folgenden Codes sein?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Antwort:
Ausgabe: Hallo, mein Name ist undefiniert
Erläuterung: Wenn Greet ohne Kontext aufgerufen wird (d. h. nicht als Person-Methode), ist dies nicht an die Person gebunden. Im nicht strikten Modus ist dies standardmäßig das globale Objekt, und da der Name nicht für das globale Objekt definiert ist, wird es als undefiniert protokolliert.
24. Was wird die Ausgabe des folgenden Codes sein?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Antwort:
- Erstes console.log: wahr
- Zweites console.log: true
Erklärung:
- Für console.log([1] == true) wird das Array [1] in einen primitiven Typ konvertiert, was zu 1 führt, und 1 == true ist wahr.
- Für console.log([0] == false) wird das Array [0] in 0 konvertiert, und 0 == false ist ebenfalls wahr.
25. Was wird die Ausgabe des folgenden Codes sein?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Antwort:
- Erstes foo(): 1
- Zweites foo(): 2
- Drittes foo(): 3
Erklärung: Die foo-Funktion verwaltet einen Abschluss um die Zählvariable, die bei jedem Aufruf von foo inkrementiert wird und ihren Zustand über alle Aufrufe hinweg beibehält.
26. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe:
- Erstes console.log(a): 1
- Zweites console.log(b): 2
- Drittes console.log(c): 3
Erklärung: a ist aufgrund der Schließung in der zweiten Funktion zugänglich. b ist auch zugänglich, wie es in zuerst definiert ist. c ist lokal für Sekunde, daher werden alle drei Variablen korrekt protokolliert.
27. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
Ausgabe: 3
Erklärung: Die Aufrufmethode ruft die Inkrementierung mit newObj als this auf, sodass sich this.num auf newObj.num bezieht. Die Inkrementierungsoperation ändert newObj.num von 2 auf 3.
28. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
Ausgabe:
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Erklärung: Die setTimeout-Funktionen verweisen aufgrund des Hochziehens alle auf dieselbe i-Variable. Wenn die Zeitüberschreitungen ausgeführt werden, wurde i bereits auf 4 erhöht, was dazu führt, dass 4 dreimal protokolliert wird.
29. Was wird die Ausgabe des folgenden Codes sein?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Antwort:
- Array: [1, 2, 3]
- newArray: [2, 3, 4]
Erklärung: Die Kartenfunktion erstellt ein neues Array basierend auf der auf jedes Element angewendeten Transformation. Das ursprüngliche Array bleibt unverändert, während newArray die Inkremente widerspiegelt.
30. Was wird die Ausgabe des folgenden Codes sein?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Antwort:
Ausgabe: Die Ausgabe hängt vom Kontext ab, in dem foo aufgerufen wird. Wenn es sich jedoch im globalen Kontext befindet, wird das globale Objekt protokolliert (Fenster in Browsern oder global in Node.js).
Erklärung: In Pfeilfunktionen ist dies lexikalisch gebunden, was bedeutet, dass dieser Wert aus dem umgebenden Kontext verwendet wird. Wenn foo im globalen Bereich aufgerufen wird, verweist dies auf das globale Objekt.
31. Was wird die Ausgabe des folgenden Codes sein?
const foo = () => { console.log(this); }; foo(); // Output?
Antwort:
Ausgabe: 42
Erklärung: Die innere Funktion ist eine Pfeilfunktion, die diese lexikalisch an den Kontext der Methodenfunktion bindet. Daher bezieht sich this.value auf obj.value, also 42.
32. Was wird die Ausgabe des folgenden Codes sein?
function createCounter() { let count = 0; return { increment: function() { count++; return count; }, decrement: function() { count--; return count; }, getCount: function() { return count; } }; } const counter = createCounter(); console.log(counter.increment()); // Output? console.log(counter.increment()); // Output? console.log(counter.getCount()); // Output? console.log(counter.decrement()); // Output? console.log(counter.getCount()); // Output?
Antwort:
Ausgabe:ReferenceError
Erklärung: Die Variable x wird innerhalb von myFunction angehoben, was bedeutet, dass sie im Funktionsumfang vorhanden ist, aber erst nach dem console.log(x) initialisiert wird. Dies führt zu einem ReferenceError, da auf die x-Variable vor ihrer Deklaration zugegriffen wird.
33. Was wird die Ausgabe des folgenden Codes sein?
console.log(typeof null); // Output?
Antwort:
Ausgabe:Hallo undefiniert
Erklärung:Wenn „greet“ ohne expliziten Kontext aufgerufen wird, bezieht sich dies nicht auf obj, daher ist this.name undefiniert.
34. Was wird die Ausgabe des folgenden Codes sein?
console.log(0.1 + 0.2 === 0.3); // Output?
Antwort:
Ausgabe:Nummer
Erklärung: In JavaScript wird NaN (Not-a-Number) als numerischer Typ betrachtet und typeof NaN gibt „Zahl“ zurück.
35. Was wird die Ausgabe des folgenden Codes sein?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Antwort:
Ausgabe: [1, 2, 3, 4]
Erklärung: Sowohl a als auch b verweisen auf dasselbe Array im Speicher. Wenn Sie 4 in b schieben, wirkt sich dies auch auf a aus.
Das obige ist der detaillierte Inhalt vonDie anspruchsvollsten und schwierigsten technischen Javascript-Interviewfragen mit Lösungen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

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.

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.

JavaScript erfordert keine Installation, da es bereits in moderne Browser integriert ist. Sie benötigen nur einen Texteditor und einen Browser, um loszulegen. 1) Führen Sie sie in der Browser -Umgebung durch, indem Sie die HTML -Datei durch Tags einbetten. 2) Führen Sie die JavaScript -Datei nach dem Herunterladen und Installieren von node.js nach dem Herunterladen und Installieren der Befehlszeile aus.

So senden Sie im Voraus Aufgabenbenachrichtigungen in Quartz Wenn der Quartz -Timer eine Aufgabe plant, wird die Ausführungszeit der Aufgabe durch den Cron -Ausdruck festgelegt. Jetzt...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver CS6
Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion