美文网首页
js高级之递归、闭包

js高级之递归、闭包

作者: 小黄鱼的偏执 | 来源:发表于2017-12-28 21:07 被阅读0次

递归

递归指函数自己调用自己
闭包指的是被函数分割形成的作用域,从而形成被保护的私有数据,这个被我们称之为闭包。在我们平常很少使用递归去计算,递归的消耗性能不可忽视,在计算比较小的值的时候我们可以忽略。
当然我们在使用的时候需要注意一些问题:
1.自己调用自己就相当于循环,以此达到一些便利。
2.我们在使用递归时候必须要有跳出的条件,不然就会出现死递归。

斐波拉切数列:

var fib = function ( n ) {
   if ( n === 0 || n === 1 ) return 1;
   return fib( n - 1 ) + fib( n - 2 );
};

闭包

要理解闭包,首先必须理解javascript特殊的变量作用域
1.全局作用域:在函数内外都能访问。
2.局部作用域:函数内部可以直接读取全局变量,函数外部无法访问函数内部的局部变量。
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。
所以说,在本质上,闭包就是将函数内部和函数和函数外部链接起来的一座桥梁。

接下来我们来看一段代码:

const Greeters = []
for (var i = 0 ; i < 10 ; i++) {
    Greeters.push(function () { return console.log(i) })
}
Greeters[0]() // 10
Greeters[1]() // 10
Greeters[2]() // 10

虽然期望输出0,1,2,…,然而实际上却不会。

相关文章

  • js高级之递归、闭包

    递归 递归指函数自己调用自己闭包指的是被函数分割形成的作用域,从而形成被保护的私有数据,这个被我们称之为闭包。在我...

  • js-高级(闭包-递归)

    1 闭包(closure) 在函数的外部去访问函数内部的变量,这一种机制其实就是闭包※※案例说明↓ chrome下...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • 详解js闭包

    详解js闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实...

  • js之函数 this指向、闭包、递归

    this指向 函数的三种调用方式: 普通函数 对象方法 构造函数普通函数this的指向问题: 谁调用我, 我就指...

  • Javascript 闭包和递归

    本篇是关于自己对于JS学习闭包和递归的学习和总结 , 大部分为引用 , 部分案例自己总结 。 1.1 闭包(cl...

  • Kotlin (二)

    尾递归 高级函数中的block 高阶函数之迭代 函数引用 闭包 1、函数的运行时环境:2、持有函数的运行状态;3、...

  • 函数表达式

    一、函数声明提升 二、递归 三、闭包(详见闭包)

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • python高级之闭包

    python高级之闭包 什么是闭包? 闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结...

网友评论

      本文标题:js高级之递归、闭包

      本文链接:https://www.haomeiwen.com/subject/petbgxtx.html