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 相关文章推荐
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
JQuery分屏指示器图片轮换效果实例
May 21 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
原生JS实现平滑回到顶部组件
Mar 16 Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 Javascript
修改ligerui 默认确认按钮的方法
Dec 27 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
js实现上下左右键盘控制div移动
Jan 16 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 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
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP中的替代语法简介
2014/08/22 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python 排列组合之itertools
2013/03/20 Python
python实现人脸识别代码
2017/11/08 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
解决c++调用python中文乱码问题
2020/07/29 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
运动会通讯稿200字
2014/02/16 职场文书
学校志愿者活动总结
2014/06/27 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
学用政策心得体会
2014/09/10 职场文书
《学会看病》教学反思
2016/02/17 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android