⊗jsPmFTFENIn 233 of 505 menu

Subtilités des expressions fonctionnelles en JavaScript

Le nom Function Expression n'est pas donné au hasard. Il signifie vraiment ceci - que ces fonctions font partie d'une expression quelconque.

Par exemple, nous pouvons concaténer une chaîne de caractères et une fonction anonyme :

let str = 'str' + function() {return 3;}; console.log(str); // affichera 'strfunction() {return 3;}'

Pourquoi voyons-nous un résultat aussi étrange, et non le nombre 3 ? Parce que le second terme - ce n'est pas le résultat de l'exécution de la fonction, mais son code source (puisque nous n'avons pas appelé cette fonction, nous l'avons simplement écrite).

Ainsi, le nom expression fonctionnelle désigne le fait qu'une telle fonction participe à une expression quelconque.

L'assignation à une variable est aussi une expression :

let func = function() { console.log('!'); };

On peut aussi, par exemple, passer une fonction en tant que paramètre à console.log et celui-ci affichera son code source dans la console - cela sera aussi considéré comme une expression :

console.log(function() {return 3;});

Pourquoi est-ce important : parce que la différence entre Function Declaration et Function Expression n'est pas du tout que la première fonction est créée avec un nom, et que la seconde n'a initialement pas de nom. Ce n'est pas le cas.

Exemple. Voici une fonction sans nom, mais qui ne participe à aucune expression (c'est-à-dire qu'aucune action n'est effectuée avec elle, pour parler simplement) :

/* Cette fonction sera une Function Declaration, mais avec une erreur syntaxique : */ function() { console.log('!'); }

Un tel code produira simplement une erreur ! Pourquoi : puisque la fonction ne participe à aucune expression, le navigateur la considère comme une Function Declaration, mais ne trouve pas son nom et génère une erreur.

Pour que l'erreur disparaisse, il faut forcer la fonction à faire partie d'une expression quelconque. Par exemple, écrivons l'opération + devant elle :

+function() { // un tel code est correct console.log('!'); };

Comment cela fonctionne : l'opération + en elle-même ne fait rien, c'est comme si on écrivait au lieu du nombre 3 le nombre +3 - c'est acceptable, mais ne change rien.

Mais dans le cas d'une fonction - cela change. Maintenant, notre fonction n'est plus simplement écrite, elle participe à une expression. C'est pourquoi il n'y aura plus d'erreur. Il n'y aura pas non plus de résultat de l'exécution de la fonction, puisque nous l'avons simplement écrite, mais pas appelée.

Au lieu de +, on peut écrire n'importe quoi. Par exemple :

-function() { // un tel code est correct console.log('!'); }; !function() { // un tel code est correct console.log('!'); };

On peut aussi mettre notre fonction entre parenthèses, dans ce cas, elle deviendra également une expression fonctionnelle :

(function() { // un tel code est correct console.log('!'); });

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

function func() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

let func = function() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

+function() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

!function func() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

-function func() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

1 + function func() { console.log('!'); }

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

(function func() { console.log('!'); })

Déterminez si la fonction présentée est une Function Declaration ou une Function Expression :

console.log( function() { console.log('!'); } );
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser