JavaScript には特殊なデータ型があります --- 関数型 JavaScript の各関数は関数型のインスタンスです。関数はオブジェクトであるため、関数名は実際には関数オブジェクトへのポインタであり、関数にバインドされません。
<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
関数名を関数へのポインターとして使用すると、ECMAScript に関数のオーバーロードの概念がない理由を理解するのに役立ちます
function sum(num1) { return num1 +100; } function sum(num1) { return num1 +200; } alert(sum(200)); //400
同じ名前の関数が 2 つ宣言されていますが、後の関数が前の関数を上書きします。上記は次のコードと同等です。
function sum(num1) { return num1 +100; } sum = function(num1) { return num1 +200; } alert(sum(200)); //400
2 番目の関数を作成すると、参照された最初の関数変数 sum が実際に上書きされます