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 相关文章推荐
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
JavaScript中创建类/对象的几种方法总结
Nov 29 Javascript
jQuery中:first选择器用法实例
Dec 30 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
JavaScript模块模式实例详解
Oct 25 Javascript
微信小程序实现多选功能
Nov 04 Javascript
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
JS实现旋转木马轮播图
Jan 01 Javascript
在vue中使用image-webpack-loader实例
Nov 12 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解密软件绿色版测试可用
2008/04/14 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
深入探究node之Transform
2017/07/20 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
python如何从键盘获取输入实例
2020/06/18 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
C语言笔试题
2014/09/04 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
实习护士自荐信
2014/06/21 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android