JavaScript에는 특별한 데이터 유형이 있습니다---Function 유형 JavaScript의 각 함수는 Function 유형의 인스턴스입니다. 함수는 객체이므로 함수 이름은 실제로 함수 객체에 대한 포인터이며 함수에 바인딩되지 않습니다.
<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
동일한 이름의 함수 두 개를 선언했지만 후자의 함수가 이전 함수를 덮어쓰는 것은 다음 코드와 동일합니다
function sum(num1) { return num1 +100; } sum = function(num1) { return num1 +200; } alert(sum(200)); //400
두 번째 함수를 생성할 때 참조된 첫 번째 함수 변수 sum이 실제로 덮어쓰여집니다