1 : Portée
Qu'est-ce qui sera imprimé sur la console ?
Réponse
Le code ci-dessus imprimera 5.
L'astuce pour résoudre ce problème est qu'il existe deux déclarations de variables, mais a est déclarée à l'aide du mot-clé var. Indique qu'il s'agit d'une variable locale d'une fonction. En revanche, b devient une variable globale.
Une autre astuce avec cette question est qu'elle n'utilise pas le mode strict (« use strict » ;). Si le mode strict est activé, le code générera une ReferenceError : b n'est pas défini. N'oubliez pas que le mode strict nécessite une spécification explicite afin d'implémenter les déclarations de variables globales. Par exemple, vous devez écrire :
console.log(b);
2 : Créer une méthode "native"
Définissez une fonction de répétition pour l'objet chaîne. Lorsqu'il est transmis dans un entier n, il renvoie le résultat de la répétition de la chaîne n fois. Par exemple :
Réponse
Une implémentation possible ressemble à ceci :
Les questions actuelles testent les connaissances des développeurs sur l'héritage et les prototypes JavaScript. Cela vérifie également que le développeur sait comment étendre les objets intégrés (même si cela ne devrait pas être fait).
Un autre point important ici est que vous devez savoir comment ne pas remplacer les fonctionnalités qui peuvent déjà être définies. Testez que la définition de la fonction n'existait pas auparavant :
Cette technique est particulièrement utile lorsqu'il vous est demandé de rendre compatibles les fonctions JavaScript.
3 : Levage du relevé
Exécutez ce code et quels résultats seront affichés.
10 : test();
Réponse
Le résultat de ce code est indéfini et 2.
La raison est que les déclarations des variables et des fonctions sont avancées (déplacées vers le haut de la fonction), mais les variables ne reçoivent aucune valeur. Ainsi, lors de l'impression de la variable, elle existe dans la fonction (elle a été déclarée), mais elle n'est toujours pas définie. Autrement dit, le code ci-dessus est équivalent au suivant :
console.log(a);
console.log(foo());
a=1;
>
test();
4 : Comment cela fonctionne en JavaScript
Que produira le code suivant ? Donnez votre réponse.
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());
Réponse
La réponse est Aurelio De Rosa et John Doe. La raison en est que dans une fonction, le comportement de celle-ci dépend de la manière dont la fonction JavaScript est appelée et définie, et pas seulement de la manière dont elle est définie.
Dans le premier appel console.log(), getFullname() est appelé en fonction de l'objet obj.prop. Le contexte fait donc référence à ce dernier et la fonction renvoie le nom complet de l'objet. En revanche, lorsque getFullname() est affecté à la variable de test, le contexte fait référence à l'objet global (fenêtre). En effet, test est implicitement défini comme propriété de l'objet global. Pour cette raison, la fonction renvoie le nom complet de la fenêtre, qui est la valeur définie sur la première ligne.
5 : appeler() et postuler()
Résolvons maintenant le problème précédent pour que le console.log() final imprime Aurelio De Rosa.
Réponse
Ce problème peut être modifié en forçant l'utilisation de call() ou apply() pour changer le contexte de la fonction. Ci-dessous, j'utiliserai call(), mais dans ce cas, apply() affichera le même résultat :