JavaScript No Overloading 函数无重载之说

      在ECMAScript语言中,函数名字仅仅只是是一个指针(能够觉得是引用),以下的代码:

"use strict";

function sum(a,b){
    return a+b;
}

console.log(sum(1,2));

var sum2 = sum;
sum = null;

console.log(sum2(3,3));

      输出:3,6;

     

       代码能够看出,我们定义了函数,事实上函数名是一个指针,指针指向了堆内存那块这个函数的定义,我们能够把这个地址保存好几份。


       我们看一下“重载”(加引號强调不是真的):

"use strict";

function addSomeNumber(num){
    return num + 100;
}

function addSomeNumber(num,add){
    return num + add;
}

console.log(addSomeNumber(10));

        结果是什么:NaN


      上面的代码能够等价于以下的书写:


 

"use strict";

var addSomeNumber = function(num){
    return num + 100;
};

addSomeNumber=function(num,add){
    return num + add;
};

console.log(addSomeNumber(10));

    由这个等价的代码,我们能够轻易的看出。当我们定义同名函数时候。相当于函数指针指向了其他代码定义。

posted @ 2017-04-22 20:42  yangykaifa  阅读(168)  评论(0编辑  收藏  举报