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相关推荐
- python运行出现SyntaxError: 'return' outside function的原因和解决办法
在写斐波那契数列代码时,编程思路是:如果正确打印了斐波那契数列,就返回0结束程序:如果输入有错,就继续重复执行输入,直到正确为止. fibo = [0,1]while True:try:times = ...
- 【bug】data functions should return an object
很多文章都说这个报错是因为data对象没有return 即下面这样: 但我遇到的报错不是这个原因引起的 除了报data functions should return an object之外,还有很多 ...
- [Vue warn]: data functions should return an object:
在引入新的vue组件时,可能出现以下错误 data functions should return an object 意思是 "数据函数应返回一个对象",错误位置 ...
- SyntaxError: ‘return‘ outside function 在python里面的报错问题
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) Return需要放 ...
- data functions should return an object:
在涉及props当中,因为涉及到数据没有 return里面所以我就把数据删除了. 导致如下: 后来,发现没有data的函数返回值. data(){ return{} } 加上之后就会解决问题
- vue中vue.runtime.esm.js?2b0e:619 [Vue warn]: data functions should return an object:报错原因
错误如图所示: 修改方法:在ContentBar.vue文件中的data写上return返回值. 必须写return的原因: 在简单的vue实例中看到的Vue实例中data属性是如下方式展示的: 在使 ...
- 使用面向对象技术创建高级 Web 应用程序
作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...
- JavaScript 使用面向对象的技术创建高级 Web 应用程序
最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员.四年半来她一直在从事 JavaScript 相关的工作,她自认为 JavaScript 技能非常好,但在不久之后我就发现实际上她对 J ...
- js方法ajax return,AJAX_PJBLOG中用到的ajaxjs.几个简单的函数,function $(id) { return document.get - phpStudy...
PJBLOG中用到的ajaxjs.几个简单的函数 function $(id) { return document.getElementById(id); } function echo(obj,ht ...
最新文章
- html 表单自动数值,web前端学习技术之对HTML5 智能表单的理解
- 3-spark学习笔记-SparkAPI
- Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载
- Java Concurrency Essentials教程
- 两个栈实现队列与两个队列实现栈
- 在struts2中配置自定义拦截器放行多个方法
- 调试断点_接口测试第11课(断点调试)
- php分页函数代码,PHP分页函数代码分享
- 国内首个比特币勒索病毒案告破,三年获利 500 万!
- 基于大数据的数据挖掘算法-大数据
- 精囊妙计 -- 策略模式(Strategy Pattern) 介绍 优缺点 使用场景案例及代码演示
- BUGKU------秋名山老司机
- C++动态爱心 520 七夕情人节整活
- AntV G6 的坑之——从卡掉渣到满帧需要几步
- 江西省抚州市谷歌高清卫星地图下载
- C/C++实现你的浪漫表白:浪漫流星雨表白程序,
- 十六进制编辑器 010 Editor
- 日期小写转大写的函数
- hdfs 指令_HDFS常用命令操作
- 浙江财经计算机学院,浙江财经大学信息学院导师介绍:王继林
热门文章
- Java如何使用Listener
- python注释_Python头条:python基础知识了解___注释、变量、Debug
- php导出mongo日志,导出mongo库到本地
- python包导入方式_python导包的几种方法(自定义包的生成以及导入详解)
- 微信公众号发多个消息php,微擎系统微信公众号关键字触发回复多条消息实现
- informix 访问mysql_informix用户权限的介绍及查看方法
- mysql PREPARE用法_PHP5 mysqli的
- mysql创建数据库时候同时创建表空间_MySQL 创建InnoDB表空间_编程学问网
- comsol matlab 循环,comsol保存为m文件,怎样在m文件里面加入for循环 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
- 后台接收数组_「面试必备」最新整理出的腾讯C++后台开发面试笔记