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 相关文章推荐
关于IFRAME 自适应高度的研究
Jul 20 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
JS中的const命令你真懂它吗
Mar 08 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 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和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
使用python分析git log日志示例
2014/02/27 Python
python中ConfigParse模块的用法
2014/09/29 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
python3 求约数的实例
2019/12/05 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
公司董事长职责
2013/12/12 职场文书
高中毕业自我鉴定
2013/12/19 职场文书
协议书怎么写
2014/04/21 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
教师考核表个人总结
2015/02/12 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
JavaScript函数柯里化
2021/11/07 Javascript
Java 多线程协作作业之信号同步
2022/05/11 Java/Android
vscode内网访问服务器的方法
2022/06/28 Servers