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为textarea添加maxlength属性的代码
Apr 07 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
JS格式化数字金额用逗号隔开保留两位小数
Oct 18 Javascript
js实现动态改变字体大小代码
Jan 02 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
Sep 15 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
js实现贪吃蛇小游戏(容易理解)
Jan 22 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
vue动态设置img的src路径实例
Sep 18 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
原生js+css调节音量滑块
Jan 15 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 开发环境配置(Zend Studio)
2010/04/28 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
python版百度语音识别功能
2019/07/09 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Python通过文本和图片生成词云图
2020/05/21 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
应届生护士求职信
2013/11/01 职场文书
服装设计专业毕业生推荐信
2013/11/09 职场文书
学生会竞聘书范文
2014/03/31 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015小学师德工作总结
2015/07/21 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL