samedi 14 mai 2011

Cours 102 : les fonctions en javascript

En javascript tout est objet. Il existe certains types de base en javascript comme les Strings, les Dates. Une fonction est aussi un type de base comme un autre. Une fonction est un objet. On put assigner une fonction à une variable.

Ci-dessous des exemples de fonction:
Une fonctino peut etre anonyme , nommée, autoexecutée.
Enfin une fonction peut etre utilisée comme constructeur.

function fonc1() {
console.log("je passe par appel de fonc1");
};
//Appel de la fonction
fonc1();
var b= function fonc() {
console.log("je passe par appel de fonc via la varible b");
};
// La variable 'b' est initialisée avec une fonction
// mais la fonction n'est pas appelée
b();
// appel de la fonction fonc via la varible qui contient la fonction
//appel de fonct sans passer par b.
// fonc(); !!! Erreur d exécution fonc n'est pas déclaré
var c= function(){
console.log("je passe par appel d une fonction anonyme via la varible c");
};
//appel de la fonction anonyme via la variable qui contient sa reference
c();
// les fonctions autoexecutées
var a= function auto() {
console.log("je passe");
}();
// la variable 'a' est initalisée avec le corps d'une fonction et les parenthèses (); de fin de déclaration
// provoque l exécution de la fonction.
(function auto() {
console.log("je passe anom");
})();
//la fonction anonyme est autoexecutée, elle ne pourra pas etre appelée par ailleurs.
// fontion qui sert de constructeur
function MyClass(n){
this.nom= n;
};
une_instance= new MyClass('spiderman');
console.log("fonction constructeur " + une_instance.constructor.name );
for (x in une_instance) {
console.log("je trouve:"+ x);
};
view raw fonction.js hosted with ❤ by GitHub



L'exécution donnera :

 node essaifunc.js
je passe par appel de fonc1
je passe par appel de fonc via la varible  b
je passe par appel d une fonction anonyme via la varible  c
je passe
je passe anom
fonction constructeur MyClass
je trouve:nom
 
Pour qu'une fonction soit autoexecutée , sa définition doit se terminer par (); ou (arg);
Ce type de fonction est utile pour lancer des actions dès la déclaration de la fonction (exemple à partir de son chargement dans un navigateur).

Une fonction se rapproche un peu de la notion de méthode dans des langages à base de classe. Mais il y plus de ressemblance avec la notion de bloc en tant que paramètre en Ruby.
 
Une fonction en javascript  accepte m'importe quel nombre de parametre.

 En cas d'absence d'un parametre , il sera assigné à la valeur indéfinie , mais la fonction ne levera pas d'exception.
Les parametres passées en plus sont disponibles dans un tableau arguments.

Aucun commentaire: