闭包是一个受到保护的变量空间.
从字面意思来看就是封闭和包裹
在函数中定义的变量,在函数外部无法访问,因此这个函数就构成闭包
###特点:
在函数体内部允许访问外部的变量,但是外部不能访问外部的变量
###要解决闭包的什么问题
就是要访问到它的数据
###怎么样访问闭包中的数据
两个模型:
返回一个函数,用这个函数获得数据
返回一个对象,这个对象包含函数,来操作这个数据
##闭包的应用有两个模型
1.实现私有数据
2.实现缓存数据
2.1闭包做缓存
2.2函数名做缓存
下面我用斐波拉契数列来煮个栗子 (不知道斐波拉契数列的百度)
####斐波拉契常见的3种做法:1.递归 2.缓存 3.不用递归,直接用循环
写一个带有缓存功能的函数
var fib = function (n) {//使用callee求兔子数列if( n < 0) throw new Error('不能输入0');if(n===0 || n ===1) return 1;return arguments.callee( n - 1) +arguments.callee(n - 2);};for (var i = 0;i<=10;i++) {console.log(fib(i));}*/
但是
本文发布于:2024-02-04 12:24:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170707162755540.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |