Heim > Web-Frontend > js-Tutorial > Analyse der neuesten JS-Interviewfragen

Analyse der neuesten JS-Interviewfragen

php中世界最好的语言
Freigeben: 2017-11-27 13:54:30
Original
1955 Leute haben es durchsucht

Für ein Web-Frontend werden Sie während des Interviews auf jeden Fall auf einige der neuesten JS-Interviewfragen stoßen. Jede Frage ist beeindruckend.

Vorbereitendes Parsen: Im aktuellen Umfang werden vor der Ausführung von js die Schlüsselwörter var und function im Voraus deklariert, aber nicht zugewiesen (persönliche Meinung)

Ich bin von der Voranalyse beeindruckt, nicht weil sie schwierig ist , aber seien Sie vorsichtig, wenn Sie unvorsichtig sind, schreiben Sie möglicherweise die falsche Antwort! Ich bin auf mehr als eine Frage vor der Analyse gestoßen, und ich kann mich noch an zwei davon erinnern!

2-1. Voranalyse 1

alert(a)
a();
var a=3;function a(){
    alert(10)
}   
alert(a)
a=6;
a();
Nach dem Login kopieren

------------Trennlinie------------ - ----

alert(a)
a();
var a=3;
var a=function(){
    alert(10)
}   
alert(a)
a=6;
a();
Nach dem Login kopieren

Als ich diesen Code sah, habe ich falsch geantwortet. Später habe ich einen Freund um Rat gefragt, und dann habe ich es selbst verstanden und es wurde geklärt!
Es gibt tatsächlich zwei Testpunkte: Der erste besteht darin, Variablen im Voraus zu deklarieren, und der zweite besteht darin, Funktionen vor der Variablendeklaration zu deklarieren!
Lassen Sie es mich unten kurz analysieren.
Der erste Teil der Operation ergibt sich:
1. Die Funktionsdeklaration hat Vorrang vor der Variablendeklaration, daher ist a am Anfang die Funktion a(){alert(10) }, Sie werden sich um diese Funktion kümmern.
2.a(), wenn die Funktion ausgeführt wird, wird Warnung(10) angezeigt.
3. Var a=3 wird ausgeführt, sodass Warnung(a) 3 anzeigt.
4 Beim Ausführen von a() wird also ein Fehler gemeldet.
Der zweite Teil der Operation ergibt:
1.underfind
2. Fehlerbericht
Wie bereits erwähnt, handelt es sich beim Pre-Parsing um eine Vordeklaration mit den Schlüsselwörtern var und function, aber ohne Wertzuweisung . Zuerst wurde es also nicht gefunden, und dann wurde ein Fehler gemeldet, weil bei der Ausführung von a() a keine Funktion war.

//Funktionsausdruck, dasselbe wie Variablendeklaration

var a=function(){
    alert(10)
}
Nach dem Login kopieren

//Funktionsdeklaration, besser als Variablendeklaration

function a(){
    alert(10)
}
Nach dem Login kopieren

2-2. Vorbereitende Analyse und Umfang

var a=0;function aa(){
    alert(a)
    a=3
}
Nach dem Login kopieren

//Das Ergebnis ist, dass nichts passiert, da Alert(0) nur ausgeführt wird, wenn die aa-Funktion ausgeführt wird

------------Trennlinie 1------------------

var a=0;function aa(){
    alert(a)
    var a=3
}
aa();
Nach dem Login kopieren

// underfind In der aa-Funktion gibt es var a=3, dann wird im aa-Bereich die Variable a im Voraus deklariert, ihr wird jedoch kein Wert zugewiesen, daher ist sie underfind

-- ------- ---Trennlinie 2----

var a=0;function aa(a){
    alert(a)
    var a=3
}
aa(5)
alert(a)
Nach dem Login kopieren

//5,0 Im Funktionskörper, die Priorität des Parameters a ist höher als die Variable a

------------Trennlinie 3------------ ------

var a=0; function aa(a){
warning(a)
a=3
}
aa(5)
Alert(a)
//5,0 Führen Sie im Funktionskörper Alert(a) und a=3 aus. Was geändert wird, ist nicht die globale Variable a, sondern der Parameter a

---. --------- Trennlinie 4----

var a=0;function aa(a){
    alert(a)
    var a=3
    alert(a)
}
aa(5)
Nach dem Login kopieren

//5,3
//Ich habe auch etwas davon, das ich nicht verstehe. Bitte fragen Sie online um Rat. Es gibt zwei Antworten (wenn Sie wissen, wie man es versteht, geben Sie mir bitte einen Rat in den Kommentaren)
// 1. Die Parameterpriorität ist höher als die Variablendeklaration, daher wird die Deklaration der Variablen a tatsächlich ignoriert. Diesmal entspricht sie
//var a=0;
//function aa(a){
// var a=5;
// alarm(a)
// a=3
// alarm(a)
//}
//aa(5)

//2. Formale Parameter und lokale Variablen haben die gleiche Priorität, was äquivalent zu
//var a=0;
//function aa(a){
// var a ist ; Zuerst deklarieren
// a=5 Da die formalen Parameter und VariablennameDer Maßstab ist derselbe, abgedeckt!
// Alert(a)
// a=3
// Alert(a)
//}
//aa(5)

--- ----------Trennlinie 5------------------

var a=0;function aa(a){
    alert(a)
    a=3
    alert(a)
}
aa()
alert(a)
//underfind  3  0
Nach dem Login kopieren

//Zuerst, Parameter Die Priorität ist höher als die der globalen Variablen, daher wird sie unterfindet
//a=3 Tatsächlich wird der Wert des formalen Parameters a geändert, nicht der der globalen Variablen a, und alarm( a) ist auch ein formaler Parameter.
//Der letzte Alarm(a), Sie wissen schon

3-1 🎜>

Ich werde dazu nicht viel mehr sagen, es ist sehr einfach, aber sehr klassisch. Das heißt, das aktuelle Element entspricht der Summe der beiden vorherigen Elemente

3-2. Datenanordnung

Zum Beispiel 123454321 23456765432
var arr=[];for(var i=0;i<10;i++ ){
    i<=1?arr.push(1):arr.push(arr[i-1]+arr[i-2]);
}
console.log(arr)
Nach dem Login kopieren
Wie geht das? Damals habe ich es in zwei Schritten geschrieben, zuerst die Vorderseite und dann die Rückseite gezeigt

Der Code lautet


Das ist zu viel Code. Später habe ich diese Art von < studiert 🎜>

Erklärung lautet wie folgt
//01234543210
//先展示前面的   01234
//n:开始的数字    m:结束的数字function num1(n,m){    for(var i=n;i<m;i++){
        //再展示后面的 543210
        console.log(i);        if(i===m-1){
            num2(n,m)
        }
    }
}function num2(n,m){    for(var i=m;i>=n;i--){
        console.log(i)
    }
}
num1(2,5)  //2345432
Nach dem Login kopieren

1. Führen Sie zuerst num(2,5) aus, was

function num(n,m){
    console.log(n);    if(n<m){
        num(n+1,m);
        console.log(n);
    }
}
num(2,5)  //2345432
Nach dem Login kopieren

ist, und dann

console.log(2); ->  num(3,5);  ->  console.log(2);      
//执行num(3,5);  就是是相当于   console.log(3); -> num(4,5); -> console.log(3); 下面以此类推
console.log(2); -> console.log(3); -> num(4,5); -> console.log(3); ->  console.log(2);
Nach dem Login kopieren
und schließlich


console.log(2); -> console.log(3); -> console.log(4); -> num(5,5); -> console.log(4); -> console.log(3); ->  console.log(2);
Nach dem Login kopieren
Ich glaube, dass Sie die Methoden beherrschen, nachdem Sie diese Fälle gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!


console.log(2); -> console.log(3); -> console.log(4); -> console.log(5); -> console.log(4); -> console.log(3); ->  console.log(2);
Nach dem Login kopieren

Verwandte Lektüre:


So erstellen Sie eine Schmetterlingsfluganimation mit CSS3

Anleitung Verwenden Sie Leinwand, um dies zu erreichen. Die Interaktion zwischen dem Ball und der Maus

So verwenden Sie Leinwand, um den Effekt einer Partikelfontänenanimation zu erzeugen

Das obige ist der detaillierte Inhalt vonAnalyse der neuesten JS-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage