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));
由这个等价的代码,我们能够轻易的看出。当我们定义同名函数时候。相当于函数指针指向了其他代码定义。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步