Es gibt einen speziellen Datentyp in JavaScript: Funktionstyp. Jede Funktion in JavaScript ist eine Instanz des Funktionstyps. Da Funktionen Objekte sind, ist der Funktionsname tatsächlich ein Zeiger auf das Funktionsobjekt und nicht an eine Funktion gebunden.
<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
Die Verwendung des Funktionsnamens als Zeiger auf die Funktion hilft zu verstehen, warum es in ECMAScript kein Konzept der Funktionsüberladung gibt
function sum(num1) { return num1 +100; } function sum(num1) { return num1 +200; } alert(sum(200)); //400
Obwohl zwei Funktionen mit demselben Namen deklariert sind, überschreibt die letztere Funktion die vorherige Funktion. Das Obige entspricht dem folgenden Code
function sum(num1) { return num1 +100; } sum = function(num1) { return num1 +200; } alert(sum(200)); //400
Beim Erstellen der zweiten Funktion wird die referenzierte erste Funktionsvariablensumme tatsächlich überschrieben