Javascript 函数 (六) 返回值为函数的函数

返回值为函数的函数(Functions that Return Functions)

在前几篇文章已经介绍了函数要有返回值,即使没有写return,函数也会返回一个undefine。

接下来看看返回值为函数的情况

function a(){
 alert('a');
 return function(){
  alert('b');
 };
}

 在这个例子中,a函数执行了alert('a'),以及它返回了另一个函数b。关于返回b的调用我们可以这样来用。

var newFunc = a();
newFunc();

 执行结果为 alert a和alert b

 如果不想赋值调用这个函数也可以简写如下

 

a()();

 函数的自身重写

 因为函数可以返回一个函数,那就意味着可以用一个新的函数替代一个旧的函数,根据前一个例子来改进一下

a=a();

 第一次运行函数a,就alert a,再次运行函数a,就alert b,这个功能对初始化非常有用。这个函数a重写了自己,避免在以后调用初始化的功能(上个例子为alert a)。

当然我们还有更简单的方法来重写a函数那就是在a函数的内部重写它,来看看代码

function a(){
 alert("a")
 a=function(){
   alert("b");
 }
}

 只有在初次调用a函数才会执行 alert a 在以后的调用中,都会执行alert b

 下面结合前几节看个综合的例子

 

var c = function(){
   function a(){
    alert('a')
   }

   function b(){
    alert('b')
   }
   a();
   return b;
}();//alert('a');
c();//alert('b');

 这个例子有以下几点需要注意

 1. a函数,b函数是内部函数。

 2. return b 返回的是个函数的引用。

 3. 子调用函数重写了函数c。

 

 如果能明白这个例子,关于内部函数,子调用函数和返回值为函数的函数就可以都理解了。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值