Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 19h45   #1
Invité régulier
 
Inscription : décembre 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 29
Points : 8
Points : 8
Par défaut Question sur les fonctions javascript

Bonsoir,

Voilà je suis en train de regarder des fichiers javascript pour la déclaration de fonction et je suis tomber sur ce genre de structure :

Code :
1
2
3
4
;(function()
{
...
}();
Cependant je ne sais pas dutout à quoi elle correspond ...

Es-ce que quelqu'un pourrait m'aider s'il vous plait pour m'expliquer ce type de déclaration car je ne trouve aucun renseignement sur internet.

Merci beaucoup de votre aide.
Walkn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 19h52   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Citation:
Envoyé par Walkn Voir le message
Bonsoir,

Voilà je suis en train de regarder des fichiers javascript pour la déclaration de fonction et je suis tomber sur ce genre de structure :

;(function()
{
...
}();


Cependant je ne sais pas dutout à quoi elle correspond ...

Es-ce que quelqu'un pourrait m'aider s'il vous plait pour m'expliquer ce type de déclaration car je ne trouve aucun renseignement sur internet.

Merci beaucoup de votre aide.
cela déclare et exécute une fonction anonyme.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h04   #3
Invité régulier
 
Inscription : décembre 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 29
Points : 8
Points : 8
Comment çà déclare ?

pourquoi le ";(" avant le function??

je ne vois pas vraiment comment cela fonctionne
Walkn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h07   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Citation:
Envoyé par Walkn Voir le message
Comment çà déclare ?

pourquoi le ";(" avant le function??

je ne vois pas vraiment comment cela fonctionne
le ; n'a rien à voir, tu l'as surement copié d'une instruction précédente !

ensuite normalement pour déclarer une fonction tu fais :

Code :
1
2
// déclarer
function nom(){...};
puis tu l'exécute comme suit :
Code :
1
2
3
 
// exécuter
nom(parametre);
les 2 en un :
Code :
1
2
3
 
// déclarer et exécuter :
(function nom(){...})(parametre);
si par la suite tu n'utiliser plus cette fonction, cela ne sert à rien de lui donner un nom qui ne servira qu'a la réutiliser donc :
Code :
1
2
3
 
// déclarer et exécuter une fonction anonyme :
(function(){...})(parametre);

Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h10   #5
Invité régulier
 
Inscription : décembre 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 29
Points : 8
Points : 8
D'accord je comprend mieux maintenant

En fait la structure que j'ai vu est comme cela :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * SyntaxHighlighter
 * @version
 * 3.0.83 (July 02 2010)
 *
 * @license
 * Dual licensed under the MIT and GPL licenses.
 */
;(function()
{
...
})();
Walkn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h13   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Citation:
Envoyé par Walkn Voir le message
D'accord je comprend mieux maintenant

En fait la structure que j'ai vu est comme cela :

/**
* SyntaxHighlighter
* @version
* 3.0.83 (July 02 2010)
*
* @license
* Dual licensed under the MIT and GPL licenses.
*/
;(function()
{
...
})();
j'imagine que le ; en début de fichier js, est préventif au cas où tu copierais le code js à la fin d'un autre fichier js et que tu n'aurais pas fini correctement la dernière instruction de cet autre fichier, typiquement genre une assignation :

qqe_chose = autrechose

mais sans certitude, je laisse me collègues te donner une vraie explication s'ils en ont une.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h16   #7
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
ici, la fonction anonyme si elle englobe toute la librairie sert à encapsuler les variables qui seront locales à ta lib(locales à la fonction anonyme) :

exemple :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var data = "un string sale^^";
 
//début de ma lib
(function(){
  var data=12;
  alert(data);
})();
//fin de ma lib
 
// début de mon code
alert(data);
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 20h36   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
Il y a aussi de la doc ici.

Enfin bon tu ne commence pas par le plus facile... Cela dit il est vrai qu'on est amené à rencontrer ce type de fonctions un jour ou l'autre.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 21h01   #9
Invité régulier
 
Inscription : décembre 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 29
Points : 8
Points : 8
Par défaut Résolu

Merci à tous pour vos réponses et vos conseils
Walkn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h51.


 
 
 
 
Partenaires

Hébergement Web