zoukankan      html  css  js  c++  java
  • 函数是对象,函数名是指针

    如题,函数与函数名的关系就和对象与对象指针关系是一样的,如何理解呢?

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

    上述代码定义了一个名为sum的函数,其函数名sum与函数主体的关系如下:

    image

    和对象与对象指针的关系一样,一个函数可以有多个名字。

    function sum(a,b){
      return a+b;
    }
    alert(sum(10,10));//20
    var anotherSum = sum;
    alert(anotherSum(10,10));//20

    上述代码将函数指针sum赋给anotherSum(函数名不带括号时是访问函数指针,而不是调用函数)。于是sum和anotherSum都指向了函数主体:

    image

    现在函数就有了两个名字,如果将其中一个名字删掉(设为null,也不影响另一个名字与函数的关系):

    sum = null;
    alert(anotherSum(10,10));//20

    image

    从上图可看出,sum=null仅是断绝了sum与函数的联系,而不影响函数本身,即可正常调用anotherSum。

    附加说明:有了对以上的理解,函数没有重载也便很好理解了。当给一个已存在的函数名再次赋值一个函数体时,指向原本函数体的指针便指向了新的函数体,所以没有重载,函数名会指向最新指向的那个函数。

  • 相关阅读:
    NOJ-1581 筷子 (线性DP)
    UVA-242 Stamps and Envelope Size (DP)
    POJ 1860 (SPFA判断正环)
    POJ 3268 最短路水题
    STL----priority_queue
    STL----unique
    POJ 2031(最小生成树Kruskal算法+几何判断)
    POJ 3468(线段树区间修改+区间求和)
    学习线段树
    POJ 1251(最小生成树裸题)
  • 原文地址:https://www.cnblogs.com/youhong/p/6507000.html
Copyright © 2011-2022 走看看