javascript中的return和闭包函数浅析


Posted in Javascript onJune 06, 2014

高手绕道!这跟闭包本身没什么大的关系,也不知道怎么取标题,随便凑了个数,望见谅!

今天一个刚学js的朋友给了我一段代码问为什么方法不执行,代码如下:

function makefunc(x) {
 return function (){
  return x;
 }
}
alert(makefunc(0));

其实不是不执行,只是朋友的意思这里alert出来的应该是“0”,而不是function (){return x;}。
不是脚本写错了,只是没搞懂return,从当前函数退出,并从那个函数返回一个值。如果返回的是一个函数,那么返回的也是函数本身。
可以这样修改上面的代码,就是alert(makefunc(0)()):
function makefunc(x) {
 return (function (){
  return x;
 })();
}
alert(makefunc(0)());

如果要返回函数执行的结果那么首先要让这个函数执行,例如:

function makefunc(x) {
 return (function (){
  return x;
 })();
}
alert(makefunc(0));

这里有一个匿名函数,
(function (){
 return x;
})();

在第一个括号内是匿名函数,第二个括号用于调用该匿名函数,您可以在第二个括号中传入所需的参数。例如:
(function( x , y){
 alert( x + y);
})(2 ,3 );
Javascript 相关文章推荐
jQuery 开发者应该注意的9个错误
May 03 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
JQuery控制DIV的选取实现方法
Sep 18 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
swiper4实现移动端导航栏tab滑动切换
Oct 16 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 #Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 #Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 #Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 #Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 #Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 #Javascript
Node.js中对通用模块的封装方法
Jun 06 #Javascript
You might like
德生9700DX电路分析
2021/03/02 无线电
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python 实现链表实例代码
2017/04/07 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
pygame实现成语填空游戏
2019/10/29 Python
python os模块在系统管理中的应用
2020/06/22 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
路政管理求职信
2014/06/18 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
2015年共青团工作总结
2015/05/15 职场文书
68句权威创业名言
2019/08/26 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python