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 :

Création de function, syntaxe, usage, mode ?


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut Création de function, syntaxe, usage, mode ?
    Bonjour,

    Mon peu de connaissance de Javascript date de l'age de pierre , et je me lance dans NodeJS depuis quelques jours.
    Du coup j'ai le sentiment de faire un bond dans le temps tant au niveau des "usages" que de certaines syntaxes.

    un simple exemple, la création de "function"

    j'ai toujours utilisé ce genre de choses:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function MaBelleFonction (arg1, arg2) {
     
    }
    et je decouvre, ici ou la, des choses comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaBelleFunction = function (arg1, arg2) {
     
    }
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaBelleFunction = function (arg1, arg2) => {
     
    }

    J'ai essayé les 3 (il y en a d'autres ?) et je ne vois aucune différence, donc pour ma culture perso, j'aimerai comprendre

    • Si il y a une différence, ou un contexte d'utiliser telle ou telle syntaxe ?
    • Est ce "uniquement" une évolution du langage, si oui ..why ?!
    • Une façon sournoise de distinguer un vieux codeur d'un codeur "a la mode"
    • Aucune différence, c'est juste pour faire "style" (avec l'accent anglais).. (sic)



    J'ai pris que cet exemple, mais j'en constate pas mal des comme ça

    Merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    rapidement ...

    • Déclaration de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function maFonction(arg1, arg2) {
      console.log(arg1, arg2):
    }
    • Expression de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const maFonction = function (arg1, arg2) {
      console.log(arg1, arg2):
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const maFonction = function nomFacultatif(arg1, arg2) {
      console.log(arg1, arg2):
    }
    • Fonction fléchée (ES6), c'est une syntaxe plus concise que les expressions de fonction, elle s'écrit sans le mot clé function :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const maFonction = /*function*/ (arg1, arg2) => {
      console.log(arg1, arg2):
    }
    Pour approfondir : Fonctions et portée des fonctions

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 098
    Par défaut
    Il y a aussi quelques détails sournois en ce qui concerne la « nature » des variables (à défaut d’un meilleur mot), je veux dire par là la façon dont elles sont déclarées (ou pas), et leur portée.
    l’instruction-fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function MaBelleFonction (arg1, arg2) {
     
    }
    est équivalente à une déclaration avec var, et sa portée sera donc celle de la fonction englobante, ou du contexte global. Dans le contexte global, elle devient alors une propriété de window.

    l’expression-fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaBelleFunction = function (arg1, arg2) {
     
    }
    Elle est techniquement une fonction anonyme qui est ensuite attribuée à la variable MaBelleFunction. Donc sa « nature » dépend de la façon dont on déclare la variable. Sans mot-clé de déclaration, en mode strict, ça lèvera une erreur. Déclarée avec var, elle a la même portée que ci-dessus ; déclarée avec let ou const, elle est locale au bloc englobant.

    Tu n’est peut-être pas familier avec let et const donc je vais développer un peu. Ces deux mots-clés font la même chose à un détail près : une variable déclarée avec const (qui serait alors plus proprement nommée une constante), n’est pas modifiable. Elle reçoit sa valeur à l’initialisation, et si on tente de la modifier après, ça lève une erreur.
    let et const ont les mêmes règles de portée : la variable est locale au bloc le plus proche, qui peut être un bloc if, for ou n’importe quoi, ou même un bloc tout seul juste pour le plaisir d’avoir un bloc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let reponse = 42;
    {
      let reponse = "C’est faux";
      console.log(reponse); // affiche "C’est faux"
    }
    console.log(reponse); // affiche 42
    Il y a deux détails à propos de let et const qui peuvent répondre à la qualification de « détail sournois » :
    • même au niveau global, la variable ne devient pas une propriété de window ;
    • il n’y a pas de hoisting.

    Ce dernier point mérite une explication : le hoisting est un mécanisme caché de var qui fait que, dans une portée, tous les noms de variables accessibles sont « scannés » à l’avance avant l’exécution, et les déclarations var ainsi que les instructions-fonctions sont remontées, « hissées », au début de la portée. Ça permet, entre autres, d’appeler une fonction avant sa déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maFonction(); // affiche "bonjour"
     
    function maFonction() {
      console.log("bonjour");
    }
    Mais avec let et const, il n’y a pas de hoisting, il y a même un message d’erreur prévu exprès pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maFonction(); // ReferenceError: can't access lexical declaration `maFonction' before initialization
     
    const maFonction = function () {
      console.log("bonjour");
    }
    Dans la communauté NodeJS, l’usage de const est fréquent pour déclarer des fonctions, car on a rarement (sinon jamais) besoin de modifier une fonction.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Erreur lors de la création d'un contrôle en mode design
    Par pog72 dans le forum ASP.NET Ajax
    Réponses: 2
    Dernier message: 11/04/2012, 11h16
  2. création d'un jar en mode console
    Par fredonouille dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 25/03/2008, 17h40
  3. Problème de création de Function
    Par dynamiteboy dans le forum Débuter
    Réponses: 3
    Dernier message: 14/03/2008, 20h57
  4. Réponses: 11
    Dernier message: 23/05/2007, 10h53
  5. Création d'interfaces graphiques en mode graphique
    Par Djakisback dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 24/03/2006, 21h46

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