


5 questions d'entretien JavaScript classiques_compétences javascript
May 16, 2016 pm 04:34 PM1 : Portée
(fonction() {
var a = b = 5;
})();
console.log(b);
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 :
(fonction() {
'utiliser strict';
var a = fenêtre.b = 5;
})();
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 :
console.log('bonjour'.repeafy(3));
devrait imprimer hellohellohello.
Réponse
Une implémentation possible ressemble à ceci :
String.prototype.repeafy = String.prototype.repeafy || fonction (fois) {
var str = '';
pour (var je = 0; je < fois; je ) {
str = ceci;
>
Retour str;
};
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 :
String.prototype.repeatify = String.prototype.repeatify || function(times) {/* codez ici */};
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.
fonction test() {
console.log(a);
console.log(foo());
var a = 1;
Fonction foo() {
Retour 2 ;
>
>
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 :
fonction test() {
var a;
Fonction foo() {
Retour 2 ;
>
console.log(a);
console.log(foo());
a=1;
>
test();
4 : Comment cela fonctionne en JavaScript
Que produira le code suivant ? Donnez votre réponse.
var nom complet = 'John Doe';
var obj = {
Nom complet : 'Colin Ihrig',
; accessoire : {
nom complet : 'Aurelio De Rosa',
getFullname : function() {
return this.fullname;
>
>
};
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 :
console.log(test.call(obj.prop));

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel

Comment obtenir facilement le code d'état HTTP en JavaScript

Comment utiliser insertBefore en javascript
