A propos de la déclaration de fonction JS
2 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1 • Partagez
A propos de la déclaration de fonction JS
Bonjour à la communauté,
Autodidacte en JS depuis mes début sur FA, j'ai souvent récupérer des fonctions toutes faites pour ensuite en modifier le contenu. Au bout d'un moment, j'en viens forcément à me poser des questions sur la déclaration de ces fonctions.
J'ai notamment vu qu'en déclarant une fonction sous la forme :
1)
En revanche, une déclaration sous la forme :
2)
Une dernière écriture m'apparait encore plus nébuleuse :
3)
Ce n'est donc pas un besoin de code que j'ai mais simplement une question de culture générale, motivée par l'envie d'essayer de comprendre les différences entre ces 3 écritures.
Merci d'avance pour vos éclairages !
Autodidacte en JS depuis mes début sur FA, j'ai souvent récupérer des fonctions toutes faites pour ensuite en modifier le contenu. Au bout d'un moment, j'en viens forcément à me poser des questions sur la déclaration de ces fonctions.
J'ai notamment vu qu'en déclarant une fonction sous la forme :
1)
- Code:
$( function Toto(){blabla} );
En revanche, une déclaration sous la forme :
2)
- Code:
function Toto(){blabla}
Une dernière écriture m'apparait encore plus nébuleuse :
3)
- Code:
(function Toto(){blabla})(jQuery);
Ce n'est donc pas un besoin de code que j'ai mais simplement une question de culture générale, motivée par l'envie d'essayer de comprendre les différences entre ces 3 écritures.
Merci d'avance pour vos éclairages !
Dernière édition par Ast le Jeu 11 Aoû 2016 - 16:53, édité 1 fois
Re: A propos de la déclaration de fonction JS
Bonjour Ast,
1. Cette déclaration est courte pour jQuery's $(document).ready(); fonction.
Par exemple :
cette provoque une erreur, parce que "#page-header" est pas encore disponible :
cette exécute bien ( sur version phpbb3 >.> ) :
Voir : https://learn.jquery.com/using-jquery-core/document-ready/ ( en anglais )
2. Cette déclaration est un "fonction invocable", il exécute le code lorsqu'il est invoqué.
Par exemple :
déclaration de la fonction :
invoquant la fonction :
Il est bon d'invoquer la même fonction à plusieurs reprises.
3. Cette déclaration est un "IIFE" ( Immediately Invoked Function Expression, en Anglais ). Il est utilisé pour invoquer immédiatement une fonction.
Par exemple :
assignant d'une valeur :
une fonction anonyme :
Voir : https://developer.mozilla.org/fr/docs/Web/JavaScript/Une_r%C3%A9introduction_%C3%A0_JavaScript#Les_fonctions ( pour 2 et 3 )
Je recommande d'utiliser la première déclaration des modifications générales.
Bonne journée.
Excusez mon Français svp. Je suis Anglais.
1. Cette déclaration est courte pour jQuery's $(document).ready(); fonction.
Par exemple :
cette provoque une erreur, parce que "#page-header" est pas encore disponible :
- Code:
var header = document.getElementById('page-header'); // null
header.innerHTML = 'New Content'; // Uncaught TypeError: Cannot set property 'innerHTML' of null
cette exécute bien ( sur version phpbb3 >.> ) :
- Code:
$(function() {
var header = document.getElementById('page-header'); // <div id="page-header">...</div>
header.innerHTML = 'New Content'; // "New Content"
});
Voir : https://learn.jquery.com/using-jquery-core/document-ready/ ( en anglais )
2. Cette déclaration est un "fonction invocable", il exécute le code lorsqu'il est invoqué.
Par exemple :
déclaration de la fonction :
- Code:
// define function
function hello (nom) {
alert('Hello ' + ( nom ? nom : 'world' ) + ' !');
};
invoquant la fonction :
- Code:
// call function
hello(); // Hello world !
hello('Ast'); // Hello Ast !
hello('Ange') // Hello Ange !
Il est bon d'invoquer la même fonction à plusieurs reprises.
3. Cette déclaration est un "IIFE" ( Immediately Invoked Function Expression, en Anglais ). Il est utilisé pour invoquer immédiatement une fonction.
Par exemple :
assignant d'une valeur :
- Code:
// assigning a value immediately by using a function
var lucky_numbers = (function() {
var randomArray = [],
i = 0;
for (; i < 5; i++) {
randomArray.push( Math.floor( Math.random() * 10 ) );
}
return randomArray;
}());
console.log(lucky_numbers); // [7, 2, 2, 4, 2]
une fonction anonyme :
- Code:
// anonymous function
(function(head) {
var stylesheet = 'URL';
head.insertAdjacentHTML('beforeend', '<link rel="stylesheet" type="text/css" href="' + stylesheet + '"/>');
}(document.getElementsByTagName('HEAD')[0]));
Voir : https://developer.mozilla.org/fr/docs/Web/JavaScript/Une_r%C3%A9introduction_%C3%A0_JavaScript#Les_fonctions ( pour 2 et 3 )
Je recommande d'utiliser la première déclaration des modifications générales.
Bonne journée.
Excusez mon Français svp. Je suis Anglais.
Re: A propos de la déclaration de fonction JS
Merci pour ce retour. Aucun soucis pour l'anglais, l'important est que l'explication soit bien passée
Je rajoute juste ce lien *ICI* sur lequel est expliqué ce qu'on entend par fonction anonyme (merci de m'avoir donné le terme, ça facilite les recherches )
Je rajoute juste ce lien *ICI* sur lequel est expliqué ce qu'on entend par fonction anonyme (merci de m'avoir donné le terme, ça facilite les recherches )
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum