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控制上传文件的大小
Oct 26 Javascript
javascript之水平横向滚动歌词同步的应用
May 07 Javascript
csdn 博客的css样式 v3
Feb 24 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
Javascript中的包装类型介绍
Apr 02 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
如何理解Vue前后端数据交互与显示
May 10 Vue.js
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使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
javascript常见用法总结
2014/05/22 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
python开发之thread线程基础实例入门
2015/11/11 Python
详解python之简单主机批量管理工具
2017/01/27 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
儿童学习python的一些小技巧
2018/05/27 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Django框架实现的分页demo示例
2019/05/25 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
Python爬取梨视频的示例
2021/01/29 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
活动总结书怎么写
2015/05/11 职场文书
增值税发票丢失证明
2015/06/19 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
德劲DE1105机评
2022/04/05 无线电