闭包的理解
来源:互联网 发布:上网行为监管软件 编辑:程序博客网 时间:2024/06/01 08:25
我看闭包是为了能让外部得到函数内部定义的局部变量。那为什么一定要写成这样的形式呢?
function f1(){ var n=999; function f2(){ alert(n); } return f2; } var result=f1(); result(); // 999
就直接return 不行么?像这样
function f1(){ var n=123; return n;}x=f1();alert(x); ///123
这也是闭包么?
首先,第二个肯定不是闭包,闭包是一个函数。闭包一般用来隐藏或说保护我们的一些成员变量,通过闭包的形式返回出去一个能够操作我们保护起来的成员变量的函数。
function f1(){ var n=999; function f2(){ alert(n++); } return f2; } var result=f1(); result(); // 999 result();// 1000
像上面这样,我们就能够访问f1的私有变量n,并且只能用每次+1的方式进行操作,一般来说闭包的使用像下面这样:
var car = (function(){ var _wheels = 4; return { setWheels : function(value){ if (value < _wheels) { throw new Error('数值太小了!'); } _wheels = value; }, getWheels : function(){ return _wheels; } } })();
我们给汽车轮子数量赋值的时候,是要调用set方法的,是不能随便赋值的。如果像你第二张方式写的:
function f1(){ var obj={age : 10}; return obj;}obj=f1();obj.age = -100;
https://segmentfault.com/q/1010000006178363 0 0
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 理解javascript的闭包
- 理解闭包的概念
- 理解Javascript的闭包
- 理解Javascript的闭包
- 理解Javascript的闭包
- 理解Javascript的闭包
- Javascript的闭包理解
- 理解Javascript的闭包
- groovy 闭包的理解
- javascript 闭包的理解
- mysql主从复制
- webpack gulp 实现完整前端工程化
- 仿 boss 直聘,查看用户头像
- 线程冲突与解决
- Log4J日志配置详解
- 闭包的理解
- bootstrap的内置按钮样式
- C++,java,Python的内部实现sort怎么实现的,有什么不同?
- VC/MFC图标菜单(菜单图标)的实现
- Linux学习日记--fork()函数笔记
- stock
- 偏移视觉效果的无限轮播
- 有规律的数列求和
- drawableTop怎样动态设置图片大小