- Fonction déclaration : message
- Fonction expression : mes
console.log(typeof message);// function
console.log(typeof mes); // undefined
// 1
function message(){
console.log("hi");
}
// 2
var mes = function (){
console.log("hi");
};
Nous allons étudier les différences de ces deux déclarations.
Portée
La fonction message est disponible dès que le programme est chargé, alors que la fonction mes ne sera disponible qu'après son affectation.Le test typeof des types en début de programme le démontre.
Autrement dit en début de programme, vous pouvez utiliser message mais pas mes !
Syntaxe
Une autre différence est la présence du point virgule lors de la définition de mes ; il s'agit en effet d'une affectation, il faut donc mettre un point virgule.Argument
Un des intérêt d'utiliser l'affectation est que la fonction peut être passée en argument d'une autre fonction.wellcome( mes ); // affiche "hi"
function wellcome ( textFx ){
textFx ();
}
intérêt
Un autre intérêt est le dynamisme de l'affectation.En voici un exemple :
let mes,
AM = true;
if ( AM ) {
mes = function (){
console.log("good morning");
};
}
else { //pm
mes = function (){
console.log("good afternoon");
};
}
wellcome ( mes );
function wellcome ( text ){
text ();
}
JS Bin on jsbin.com