Heim > Web-Frontend > js-Tutorial > 5 Weitere JavaScript -Interviewübungen

5 Weitere JavaScript -Interviewübungen

Joseph Gordon-Levitt
Freigeben: 2025-02-20 08:59:08
Original
592 Leute haben es durchsucht

5 More JavaScript Interview Exercises

Nachfolger in meinem vorherigen Artikel "5 Typische JavaScript -Interviewübungen" untersucht dieses Stück zusätzliche Fragen der gemeinsamen Interviews und konzentriert sich auf wichtige JavaScript -Konzepte. Lassen Sie uns eintauchen!

Key Takeaways:

  • Verschlüsse sind entscheidend: Verständnis ist wesentlich. Denken Sie daran, dass variable Werte innerhalb der Schließungen zum Zeitpunkt der Handlungserstellung nicht festgelegt sind. Sie spiegeln den aktuellen Wert wider, wenn der Handler ausgeführt wird.
  • typeof Bediener -Quirks: typeof [] Gibt "Objekt", nicht "Array" zurück. Verwenden Sie instanceof, um nach Array -Typen zuverlässig zu überprüfen.
  • Ereignisschleife Mechanik: Die Ereignisschleife des Browsers verwaltet die Ereigniswarteschlange. setTimeout(), selbst mit einer Verzögerung von Null setzt sich der Rückruf für die spätere Ausführung an.
  • isPrime() Funktionsoptimierung: Validieren Sie immer Eingänge (negative Zahlen, 0, 1 sind nicht primet; 2 ist die einzige gleiche Prime). Testen der Spaltbarkeit nur bis zur Quadratwurzel des Eingangs verbessert die Effizienz erheblich.

Frage 1: Schließungen - Das klassische Problem

Betrachten Sie diesen Code:

var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', function() {
        console.log('You clicked element #' + i);
    });
}
Nach dem Login kopieren
Nach dem Login kopieren

Was ist die Ausgabe, wenn Sie auf die erste und vierte Schaltflächen klicken? Warum?

Antwort:

Dies unterstreicht das Schließungsverhalten. Der Code druckt "Sie klickte auf Element #[Anzahl der Schaltflächen]" zweimal geklickt. Die Variable i wird über alle Ereignishandler geteilt. Bis zum Zeitpunkt einer Schaltfläche klickt, ist die Schleife abgeschlossen und i hält den Endwert (die Anzahl der Schaltflächen).

Frage 2: Behebung des Verschlussproblems

Ändern Sie den vorherigen Code, um den Index der Schaltfläche korrekt zu drucken (0 für die erste, 1 für die zweite usw.).

Antwort:

Zwei Lösungen:

Lösung 1 (iife):

var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', (function(i) {
        return function() {
            console.log('You clicked element #' + i);
        };
    })(i));
}
Nach dem Login kopieren

Lösung 2 (Wrapper -Funktion):

function handlerWrapper(i) {
    return function() {
        console.log('You clicked element #' + i);
    };
}

var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', handlerWrapper(i));
}
Nach dem Login kopieren

Frage 3: Datentyp Gotchas

Was ist die Ausgabe davon?

console.log(typeof null);
console.log(typeof {});
console.log(typeof []);
console.log(typeof undefined);
Nach dem Login kopieren

Antwort:

<code>object
object
object
undefined</code>
Nach dem Login kopieren

Beachten Sie das überraschende "Objekt" für Arrays. Verwenden Sie myArray instanceof Array für eine genaue Überprüfung des Array -Typs.

Frage 4: Ereignisschleife Bestellung

Was ist die Ausgabe und warum?

function printing() {
    console.log(1);
    setTimeout(function() { console.log(2); }, 1000);
    setTimeout(function() { console.log(3); }, 0);
    console.log(4);
}

printing();
Nach dem Login kopieren

Antwort:

<code>1
4
3
2</code>
Nach dem Login kopieren

Die Ereignisschleife erklärt dies. setTimeout Rückrufe werden in der Warteschlange gestellt, auch mit einer Verzögerung von 0 ms. Sie führen nach Abschluss des Haupt -Threads aus.

Frage 5: Der isPrime() Algorithmus

Schreiben Sie eine Funktion isPrime(number), die true zurückgibt, wenn die Zahl Primzahl ist, false sonst

Antwort:

var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', function() {
        console.log('You clicked element #' + i);
    });
}
Nach dem Login kopieren
Nach dem Login kopieren

Diese optimierte Version übernimmt die Eingabevalidierung und überprüft nur ungerade Zahlen bis zum Quadratwurzel.

Schlussfolgerung:

Diese Übungen behandeln grundlegende JavaScript -Konzepte, die häufig in Interviews getestet wurden. Üben Sie diese, um Ihr Verständnis zu stärken und Ihre Interviewleistung zu verbessern.

Das obige ist der detaillierte Inhalt von5 Weitere JavaScript -Interviewübungen. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage