IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Testez vos connaissances avec un Quiz sur l'usage avancé des fonctions en JavaScript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut Testez vos connaissances avec un Quiz sur l'usage avancé des fonctions en JavaScript


    Les fonctions sont un des éléments les plus intéressants du langage JavaScript, mais beaucoup de leurs subtilités restent méconnues. Afin de mesurer vos connaissances et de vous faire découvrir de nouvelles manières d'utiliser les fonctions, un nouveau quiz JavaScript dédié aux fonctions vient d'être publié !

    Quiz: Usage avancé des fonctions

    Le quiz est de niveau difficile, donc pas de panique si vous n'avez pas la moyenne Et merci de ne pas indiquer des éléments de réponse dans vos commentaires.

    Pour les plus chevronnés d'entre vous, je vous propose une onzième question pas piquée des vers. Etant donné son haut niveau d'inintelligibilité, je vous laisse vous échanger des pistes de réflexion publiquement dans les commentaires de ce topic.

    QUESTION BONUS
    11. A votre avis, à quoi sert la fonction suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var f = Function.bind.bind(Function.call);
    a) à chaîner des fonctions en gardant toujours le même contexte d'appel
    b) à transformer une méthode en fonction classique où l'instance est passée en argument
    c) à modifier la fonction bind pour qu'elle exécute les fonctions sur lesquelles on l'appelle
    d) à faire s'arracher les cheveux aux collègues


    Merci à NoSmoking, SpaceFrog et vermine pour la relecture du quiz.


    Participez également à nos autres quizz :
    Les quizz JavaScript.
    Tous les quizz de Developpez.com dont certains portent sur le CSS, HTML ou PHP.

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    7/10, c'est mieux que mon score sur le DOM !
    Sympathique ce petit test, j'aurais dû le faire demain matin après le café plutôt qu'en fin de journée, mais ma curiosité a eu le dessus

    Pour la question BONUS, je dirais que c'est une sorte de wrapper qui évite de taper maFonction.call :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function maFonction() {
      console.log(this.nom);
    }
     
    maFonction.call({nom: 'Marty'}); // Marty
    A la place, suffit donc de :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var f = Function.bind.bind(Function.call);
    f(maFonction)({nom: 'Marty'});
    Mais à quoi ça peut servir à part donner un contexte d'exécution à maFonction ?
    Je trouve qu'utiliser maFonction.call(context) est plus clair.

  3. #3
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    9/10 mais la réponse à la question 9 est une réponse par défaut
    @Kaamo: sans tester ?

    Ah et merci, ça fait du bien

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Bien oui sans tester
    J'ai échoué à la 5 et à la 8 & 9 sur les closures. Parce qu'utiliser une closure, c'est cacher la valeur de certaines variables aux utilisateurs selon moi. ça ne peut pas marcher aussi comme réponse ?

  5. #5
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Bravo!
    La valeur d'une simple variable locale dans une fonction est aussi cachée pour l'utilisateur, non ?

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Oui c'est inaccessible via le scope global.
    Je trouve que la réponse 3) de la question 9 pourrait aussi bien être une bonne réponse. En définissant des variables dans une closure, on rend inaccessible leur manipulation des utilisateurs mais pas des développeurs bien sûr

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Par défaut
    Ca peut servir a rendre accessibles des fonctions natives plus facilement :
    var f = Function.bind.bind(Function.call);
    var map = f(Array.prototype.map);

    map est directement utilisable sous forme de fonction plutôt que d'appeler a chaque fois Array.prototype.map.call(.....).
    Par contre je pense que c'est moins efficace côté perf (à cause du bind).

  8. #8
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Je ne sais pas à quoi servent les clotures au final, je les utilise essentiellement pour émuler le mot-clef 'static' du C, en gros pour avoir des variables rémanentes, ou des fonctions, qui ne polluent pas la portée parente. Bien qu'en C, elles soient définies dans la portée d'utilisation. J'ai souvent été étonné de la confusion entre variables privées et static d'ailleurs.

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    @lysandro: tu viens déjà de lister deux utilisations possibles Un article dédié aux fermetures va être publié prochainement, ce sera l'occasion de faire le tour du sujet.

  10. #10
    Membre éprouvé

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Décembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 32
    Par défaut
    9/10. pas mal

    Pour ma défence (parcequ'on est jamais content ^^) : La question 6 aurait pu être mieux reformulée

    Bravo pour ce quizz ! J'attends les suivants...

  11. #11
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Oh, je l'ai pourtant reformulée une paire de fois celle-là. Qu'est-ce qui ne t'a pas paru clair ?

  12. #12
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Par défaut
    Hum, test sympathique, néanmoins, fort dommage d'y voir tant de choses non-valides en strict mode...

  13. #13
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    C'est-à-dire ? Si tu as un exemple je suis curieux de voir les différences avec ou non l'activation du strict mode

    Merci NoSmoking pour l'explication. C'est vrai que l'écriture "Macro" est plus familière.

  14. #14
    Membre éclairé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Par défaut
    Votre score : 5 / 10


    Il n'y a que les questions sur les closure où j'étais certain des réponses, le reste j'ai tenté ce qui me semblait le plus logique mais ça n'a pas vraiment fonctionné.

    Et pour la question Bonus, définitivement la réponse D

  15. #15
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    C'est-à-dire ? Si tu as un exemple je suis curieux de voir les différences avec ou non l'activation du strict mode

    Merci NoSmoking pour l'explication. C'est vrai que l'écriture "Macro" est plus familière.
    Facile...

    À la question 2...
    À la question 4...
    ... lèveront une exception

    À la question 7, la proposition 1 retournera undefined

    ... bref, 7/10 pour SylvainPV

  16. #16
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Si l'on était en mode strict, je l'aurais précisé... A la question 2 et 4, aucune des propositions ne mentionnent une exception donc on ne pouvait pas se tromper. Et mode strict ou pas, la proposition 1 de la question 7 reste la proposition 1 de la question 7. Pourquoi voudrais-tu qu'elle change ?

    Désolé Lcf, il va te falloir trouver une autre excuse pour tes points perdus

  17. #17
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Par défaut
    Bah, je ne cherchais pas d'excuses, surtout avec un 9/10, tout comme je ne disais pas que j'y ai répondu en me basant sur le strict mode, juste que je trouve dommage d'encore illustrer du non-strict.

    Et, pour la question 7, je voulais simplement dire qu'en strict mode, l'explication de la première proposition ne tient plus.

Discussions similaires

  1. Réponses: 30
    Dernier message: 28/03/2015, 12h21
  2. Réponses: 0
    Dernier message: 20/10/2014, 09h02
  3. Testez vos connaissances avec le deuxième Quizz JavaScript
    Par vermine dans le forum Général JavaScript
    Réponses: 46
    Dernier message: 07/05/2014, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo