欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Functions that return a function

发布时间:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Functions that return a function 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  javascript学习中,经常会遇到闭包的问题,然后闭包的很多例子中又会遇到很多返回函数的闭包的例子程序。因为对闭包的理解还不够透彻,然后对于Functions rerurn a function产生了疑问。

  stackflow上有一个关于functions return a function的问题,参考https://stackoverflow.com/questions/7629891/functions-that-return-a-function

  然后测试过程中发现一些问题,先看一下下面的例子;

function a() {alert('A!');function b(){alert('B!'); }return b();}var s = a();alert('break');s();

这个程序的结果是

A! B! break

 然后第二个程序是

function a() {alert('A!');function b(){alert('B!'); }return b; }var s = a(); alert('break'); s();

执行结果如下

A! break B!

 这两个例子其实存在问题,但是不影响我们来理解返回函数。最简单直接的解释如下:

return b(); calls the function b(), and returns its result.

return b; returns a reference to the function b, which you can store in a variable to call later.

也就是说s = a():

如果a函数中返回的是b(),就会调用b函数,并且将b函数的返回结果赋值给变量s;(这个例子中由于b函数没有返回值,所以s的值是undefined)

如果a函数中返回的是b,会返回一个b函数的引用给变量s,你可以使用s()来调用该函数。

 


 

然后说一下,运行上面代码的过程中遇到的问题,对于第一个例子,在运行过程中,会报出TypeError的错误,原因是变量s并不是一个函数。非函数变量后面是不可以添加“()”的,否则程序会报错。如果在不清楚变量是否是函数的情况下,可以使用typeof s == 'function'来测试一下。

 

 

 

转载于:https://www.cnblogs.com/Jamie1032797633/p/9340186.html

总结

以上是生活随笔为你收集整理的Functions that return a function的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。