本文主要是介绍闭包的应用斐波拉契数列为例详细讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先解释下什么是闭包
闭包是一个受到保护的变量空间.
从字面意思来看就是封闭和包裹
为什么说函数是闭包?
在函数中定义的变量,在函数外部无法访问,因此这个函数就构成闭包
###特点:
在函数体内部允许访问外部的变量,但是外部不能访问外部的变量
###要解决闭包的什么问题
就是要访问到它的数据
###怎么样访问闭包中的数据
两个模型:
返回一个函数,用这个函数获得数据
返回一个对象,这个对象包含函数,来操作这个数据
##闭包的应用有两个模型
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));}*/
但是
这篇关于闭包的应用斐波拉契数列为例详细讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!