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

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

  • 相关阅读:
    终结篇:MyBatis原理深入解析(二)
    Centos7 安装clamav杀毒
    jenkins 自动化部署
    docker 安装redis
    linux CentOS7 安装字体库-转
    docker 安装jenkins
    linux 下安装docker
    linux 下安装redis
    linux 下mongo 基础配置
    Linux下MongoDB安装和配置详解
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6749266.html
Copyright © 2011-2022 走看看