js中闭包的理解二
2016-07-06 15:03
363 查看
闭包的三个特征:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
闭包就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
如果不想用两个括号调用,有两种方式
方式1:定义一个变量接受子函数返回的值,再执行变量所在的函数
为什么第二个会弹undefined,因为一个函数如果没有返回值,就会是一个undefined。
如果内部函数(子函数)在里面执行,就不用写return,如
如果内部函数(子函数)不在里面执行,就要写return,然后在父函数aa外面调用返回来的子函数。
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
闭包就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
如果不想用两个括号调用,有两种方式
方式1:定义一个变量接受子函数返回的值,再执行变量所在的函数
function aa(){ var b = 10; return function cc(){ b++; alert(b); } } var dd = aa(); dd();//11,执行后b++还在,再次调用dd();弹12,如果dd=null;b被回收,闭包会使变量始终保存在内存中,如果使用不当会增大内存消耗。方式2:子函数直接在里面就调用
function aa(){ var b = 10; (function cc(){ b++; alert(b); })(); } alert(aa());结果:11,undefined
为什么第二个会弹undefined,因为一个函数如果没有返回值,就会是一个undefined。
如果内部函数(子函数)在里面执行,就不用写return,如
function aa(){ var b = 10; return (function cc(){ b++; alert(b); })(); } aa();此时return在里面没有意义,因为子函数cc没有返回值,就像Java不用写return void一样
如果内部函数(子函数)不在里面执行,就要写return,然后在父函数aa外面调用返回来的子函数。
相关文章推荐
- 浅析highchart
- js中的return
- js中闭包的理解一
- 小代码 HTML 每个按钮控制一个DIV js实现
- js正则表达式的使用详解
- browser js
- js数组查找
- JavaScript高级程序设计——第5章:引用类型
- web.xml配置异常处理界面
- js 数值格式化函数
- JSON
- js 获取根目录 获取参数
- 格式化JSON输出
- webpack打包后bundle.js文件过大的问题
- JavaScript实现异步的4种方法
- 按钮特效 基于SVG和Segment.js的Loading加载
- js代码让iframe窗口全屏
- get不上去的,可能就需要用post 传 js ajax
- JavaScript的事件监听、捕获和冒泡
- javascript内建对象Math