JavaScript No Overloading 函数无重载之说

页面导航:首页 > 网络编程 > JavaScript > JavaScript No Overloading 函数无重载之说

JavaScript No Overloading 函数无重载之说

来源: 作者: 时间:2016-02-02 09:58 【

在ECMAScript语言中,函数名字只不过是一个指针(可以认为是引用),下面的代码: "use strict ";function sum(a,b){ return a+b;}console log(sum(1,2));var sum2 = sum;su

在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));

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

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<