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

5 Weitere JavaScript -Interviewübungen

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-20 08:59:08594Durchsuche

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:

<code class="language-javascript">var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', function() {
        console.log('You clicked element #' + i);
    });
}</code>

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):

<code class="language-javascript">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));
}</code>

Lösung 2 (Wrapper -Funktion):

<code class="language-javascript">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));
}</code>

Frage 3: Datentyp Gotchas

Was ist die Ausgabe davon?

<code class="language-javascript">console.log(typeof null);
console.log(typeof {});
console.log(typeof []);
console.log(typeof undefined);</code>

Antwort:

<code>object
object
object
undefined</code>

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?

<code class="language-javascript">function printing() {
    console.log(1);
    setTimeout(function() { console.log(2); }, 1000);
    setTimeout(function() { console.log(3); }, 0);
    console.log(4);
}

printing();</code>

Antwort:

<code>1
4
3
2</code>

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:

<code class="language-javascript">var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
    nodes[i].addEventListener('click', function() {
        console.log('You clicked element #' + i);
    });
}</code>

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!

Stellungnahme:
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