Il existe un type de données spécial en JavaScript --- Type de fonction. Chaque fonction en JavaScript est une instance du type Function. Puisque les fonctions sont des objets, le nom de la fonction est en fait un pointeur vers l’objet fonction et n’est pas lié à une fonction.
<pre name="code" class="html">function sum(num1,num2) { return num1 +num2; } alert(sum(10,10)); //20 var other = sum; alert(other(10,10)); //20 sum = null; alert(other(10,10)); //20
Utiliser le nom de la fonction comme pointeur vers la fonction permet de comprendre pourquoi il n'y a pas de concept de surcharge de fonction dans ECMAScript
function sum(num1) { return num1 +100; } function sum(num1) { return num1 +200; } alert(sum(200)); //400
Bien que deux fonctions du même nom soient déclarées, cette dernière fonction écrase la fonction précédente. Ce qui précède est équivalent au code suivant
.
function sum(num1) { return num1 +100; } sum = function(num1) { return num1 +200; } alert(sum(200)); //400
Lors de la création de la deuxième fonction, la somme des variables de la première fonction référencée est en fait écrasée