zoukankan      html  css  js  c++  java
  • 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));

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

  • 相关阅读:
    NPIV介绍
    PowerShell随笔2_分支 选择 循环 特殊变量
    socket编程原理
    Linux查看物理CPU个数、核数、逻辑CPU个数
    Markdown 使用指南
    Linux Socket
    YoutubeAPI使用
    Youtube API数据类型
    Linux wpa_cli 调试方法
    linux网络编程
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6749266.html
Copyright © 2011-2022 走看看