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 插件 任意位置浮动固定层
Dec 25 Javascript
JavaScript 事件的一些重要说明
Oct 25 Javascript
javascript 解析url的search方法
Feb 09 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
Mar 17 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
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php实现网页端验证码功能
2017/07/11 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
几行js代码实现自适应
2017/02/24 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Sanic框架安装与简单入门示例
2018/07/16 Python
python实现键盘控制鼠标移动
2020/11/27 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
学校七一活动方案
2014/01/19 职场文书
购房委托书范本
2014/09/18 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
琅琊山导游词
2015/02/05 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
virtualenv隔离Python环境的问题解析
2022/06/21 Python