Maison >interface Web >js tutoriel >Analyse des dernières questions d'entretien JS

Analyse des dernières questions d'entretien JS

php中世界最好的语言
php中世界最好的语言original
2017-11-27 13:54:301971parcourir

Pour une interface Web, vous rencontrerez certainement des questions d'entretien JS au cours de l'entretien. Aujourd'hui, je vais résumer pour vous certaines des dernières questions d'entretien JS

Pré-analyse : Dans le scope actuel, avant l'exécution de js, les mots-clés var et function seront déclarés à l'avance, mais ne seront pas attribués (avis personnel)

Je suis impressionné par la pré-analyse, pas parce que c'est difficile , mais soyez prudent. Si vous êtes négligent, vous risquez d'écrire la mauvaise réponse ! J'ai rencontré plus d'une question de pré-analyse, et je m'en souviens encore de deux. Laissez-moi vous le dire !

2-1 Pré-analyse 1

alert(a)
a();
var a=3;function a(){
    alert(10)
}   
alert(a)
a=6;
a();

------------Ligne de séparation------------- - ----

alert(a)
a();
var a=3;
var a=function(){
    alert(10)
}   
alert(a)
a=6;
a();

Quand j'ai vu ce code, j'ai mal répondu. Plus tard, j'ai demandé conseil à un ami, puis je l'ai compris moi-même, et ça s'est arrangé !
Il y a en fait deux points de test. Le premier consiste à déclarer les variables à l'avance, et le second consiste à déclarer les fonctions avant les déclarations de variables !
Permettez-moi de l'analyser brièvement ci-dessous,
La première partie des résultats de l'opération :
1. La déclaration de fonction a priorité sur la déclaration de variable, donc au début, a est la fonction a(){alert(10) }, vous veillerez à cette fonction.
2.a(), lorsque la fonction est exécutée, alert(10) apparaît
3. Var a=3 est exécuté donc alert(a) affiche 3
4 Puisque a n'est pas une fonction ; , Ainsi, lors de l'exécution de a(), une erreur sera signalée.
La deuxième partie des résultats de l'opération :
1.underfind
2. Rapport d'erreur
Comme mentionné précédemment, la pré-analyse est une pré-déclaration avec les mots-clés var et function, mais aucune attribution de valeur. . Donc, au début, c'était sous-financé, puis une erreur a été signalée car lorsque a() était exécuté, a n'était pas une fonction.

//Expression de fonction, identique à la déclaration de variable

var a=function(){
    alert(10)
}

//Déclaration de fonction, meilleure que la déclaration de variable

function a(){
    alert(10)
}

2-2. Pré-analyse et portée

var a=0;function aa(){
    alert(a)
    a=3
}

//Le résultat est que rien ne se passe, car alert(0) n'est exécuté que lorsque la fonction aa est exécutée

------------Ligne de séparation 1--------

var a=0;function aa(){
    alert(a)
    var a=3
}
aa();

// underfind Dans la fonction aa, il y a var a=3, puis dans le scope aa, la variable a est déclarée à l'avance, mais elle ne se verra pas attribuer de valeur, elle est donc underfind

-- ------- ---Ligne de séparation 2------------------

var a=0;function aa(a){
    alert(a)
    var a=3
}
aa(5)
alert(a)

//5,0 Dans le corps de la fonction, le Priorité est supérieur à la variable a
------------Ligne de séparation 3--------------- --------

var a=0; fonction aa(a){
alerte(a)
a=3
}
aa(5)
alert(a)
//5,0 Dans le corps de la fonction, exécutez alert(a) et a=3 Ce qui est modifié n'est pas la variable globale a, mais le paramètre a

-. ----------- Ligne de démarcation 4------------------


var a=0;function aa(a){
    alert(a)
    var a=3
    alert(a)
}
aa(5)
//5 ,3

//J'ai un peu ça aussi, je ne comprends pas. Merci de demander conseil en ligne. Il y a deux réponses (si vous savez comprendre, merci de me donner quelques conseils dans les commentaires)
. //1. La priorité du paramètre est supérieure à la déclaration de la variable, donc la déclaration de la variable a est en fait ignorée, cette fois équivaut à
//var a=0;
//function aa(a){<.>// var a=5;
// alerte(a)
// a=3
// alerte(a)
//}
//aa(5)

//2. Les paramètres formels et les variables locales ont la même priorité, ce qui équivaut à
//var a=0;
//function aa(a){
// var a; Déclarer en premier
// a=5 Puisque les paramètres formels et
nom de la variable
L'échelle est la même, couverte ! // alerte(a)// a=3
// alerte(a)
//}
//aa(5)

--- ----------Ligne de séparation 5------------------



//Tout d'abord, paramètres La priorité est supérieure à la variable globale. Puisqu'aucun paramètre n'est passé, elle est underfind
var a=0;function aa(a){
    alert(a)
    a=3
    alert(a)
}
aa()
alert(a)
//underfind  3  0
//a=3 En fait, la valeur du paramètre formel a est modifiée, pas la variable globale a, et alert(. a) est également un paramètre formel a

//La dernière alerte(a), vous savez


3 Boucles et récursion

3-1. 🎜>

Je n’en dirai pas grand chose, c’est très simple, mais très classique. C'est-à-dire que l'élément actuel est égal à la somme des deux éléments précédents

3-2 Disposition des données

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)
Par exemple, 123454321 23456765432

Comment faire cela ? A cette époque, je l'ai écrit en deux étapes, d'abord en montrant le recto, puis en montrant le verso

Le code est



C'est trop de code plus tard, j'ai étudié ce genre de <.>

//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
L'explication est la suivante

1. Exécutez d'abord num(2,5), qui est
function num(n,m){
    console.log(n);    if(n<m){
        num(n+1,m);
        console.log(n);
    }
}
num(2,5)  //2345432

, puis

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);
et enfin


console.log(2); -> console.log(3); -> console.log(4); -> num(5,5); -> console.log(4); -> console.log(3); ->  console.log(2);
Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !


console.log(2); -> console.log(3); -> console.log(4); -> console.log(5); -> console.log(4); -> console.log(3); ->  console.log(2);

Lecture connexe :


Comment créer une animation de vol de papillon avec CSS3

Comment utiliser Canvas L'interaction entre la balle et la souris

Comment utiliser Canvas pour créer l'effet d'animation de fontaine de particules

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn