Maison interface Web js tutoriel 5 questions d'entretien JavaScript classiques_compétences javascript

5 questions d'entretien JavaScript classiques_compétences javascript

May 16, 2016 pm 04:34 PM
javascript

1 : Portée

Copier le code Le code est le suivant :

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

Copier le code Le code est le suivant :

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

Copier le code Le code est le suivant :

console.log('bonjour'.repeafy(3));

devrait imprimer hellohellohello.

Réponse

Une implémentation possible ressemble à ceci :

Copier le code Le code est le suivant :

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 :

Copier le code Le code est le suivant :

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.

Copier le code Le code est le suivant :

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 :

Copier le code Le code est le 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.

Copier le code Le code est le suivant :

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 :

Copier le code Le code est le suivant :

console.log(test.call(obj.prop));
Déclaration de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

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 WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

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 mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

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 Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

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 Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

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 JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

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 obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

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

Comment utiliser insertBefore en javascript Comment utiliser insertBefore en javascript Nov 24, 2023 am 11:56 AM

Comment utiliser insertBefore en javascript

See all articles