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相关推荐

  1. python运行出现SyntaxError: 'return' outside function的原因和解决办法

    在写斐波那契数列代码时,编程思路是:如果正确打印了斐波那契数列,就返回0结束程序:如果输入有错,就继续重复执行输入,直到正确为止. fibo = [0,1]while True:try:times = ...

  2. 【bug】data functions should return an object

    很多文章都说这个报错是因为data对象没有return 即下面这样: 但我遇到的报错不是这个原因引起的 除了报data functions should return an object之外,还有很多 ...

  3. [Vue warn]: data functions should return an object:

        在引入新的vue组件时,可能出现以下错误     data functions should return an object 意思是 "数据函数应返回一个对象",错误位置 ...

  4. SyntaxError: ‘return‘ outside function 在python里面的报错问题

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) Return需要放 ...

  5. data functions should return an object:

    在涉及props当中,因为涉及到数据没有 return里面所以我就把数据删除了. 导致如下: 后来,发现没有data的函数返回值. data(){ return{} } 加上之后就会解决问题

  6. vue中vue.runtime.esm.js?2b0e:619 [Vue warn]: data functions should return an object:报错原因

    错误如图所示: 修改方法:在ContentBar.vue文件中的data写上return返回值. 必须写return的原因: 在简单的vue实例中看到的Vue实例中data属性是如下方式展示的: 在使 ...

  7. 使用面向对象技术创建高级 Web 应用程序

    作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...

  8. JavaScript 使用面向对象的技术创建高级 Web 应用程序

    最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员.四年半来她一直在从事 JavaScript 相关的工作,她自认为 JavaScript 技能非常好,但在不久之后我就发现实际上她对 J ...

  9. js方法ajax return,AJAX_PJBLOG中用到的ajaxjs.几个简单的函数,function $(id) { return document.get - phpStudy...

    PJBLOG中用到的ajaxjs.几个简单的函数 function $(id) { return document.getElementById(id); } function echo(obj,ht ...

最新文章

  1. html 表单自动数值,web前端学习技术之对HTML5 智能表单的理解
  2. 3-spark学习笔记-SparkAPI
  3. Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载
  4. Java Concurrency Essentials教程
  5. 两个栈实现队列与两个队列实现栈
  6. 在struts2中配置自定义拦截器放行多个方法
  7. 调试断点_接口测试第11课(断点调试)
  8. php分页函数代码,PHP分页函数代码分享
  9. 国内首个比特币勒索病毒案告破,三年获利 500 万!
  10. 基于大数据的数据挖掘算法-大数据
  11. 精囊妙计 -- 策略模式(Strategy Pattern) 介绍 优缺点 使用场景案例及代码演示
  12. BUGKU------秋名山老司机
  13. C++动态爱心 520 七夕情人节整活
  14. AntV G6 的坑之——从卡掉渣到满帧需要几步
  15. 江西省抚州市谷歌高清卫星地图下载
  16. C/C++实现你的浪漫表白:浪漫流星雨表白程序,
  17. 十六进制编辑器 010 Editor
  18. 日期小写转大写的函数
  19. hdfs 指令_HDFS常用命令操作
  20. 浙江财经计算机学院,浙江财经大学信息学院导师介绍:王继林

热门文章

  1. Java如何使用Listener
  2. python注释_Python头条:python基础知识了解___注释、变量、Debug
  3. php导出mongo日志,导出mongo库到本地
  4. python包导入方式_python导包的几种方法(自定义包的生成以及导入详解)
  5. 微信公众号发多个消息php,微擎系统微信公众号关键字触发回复多条消息实现
  6. informix 访问mysql_informix用户权限的介绍及查看方法
  7. mysql PREPARE用法_PHP5 mysqli的
  8. mysql创建数据库时候同时创建表空间_MySQL 创建InnoDB表空间_编程学问网
  9. comsol matlab 循环,comsol保存为m文件,怎样在m文件里面加入for循环 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  10. 后台接收数组_「面试必备」最新整理出的腾讯C++后台开发面试笔记