美文网首页
Js中的闭包

Js中的闭包

作者: 页面仔小杨 | 来源:发表于2017-08-03 10:56 被阅读0次

闭包 是前端面试必问的一个知识点

one: 什么是闭包

two: 闭包的作用是什么

一、变量的作用域

全局变量 局部变量

在Js中函数内部可以直接读取 全局变量,而函数外部 自然无法读取 函数内部的局部变量

栗子1:

var name = 'itxing';  // name为全局变量

function getName() {

    console.log(name)

}

getName()  //itxing

栗子2:

function getName() {

    var name = 'itxing';  //  局部变量

}

console.log(name)  //undefined

二、什么是闭包

MDN对其的理解

闭包是一个函数,特指那些可以访问独立变量的函数(这种独立变量在本地使用,但是却定义在一个封闭的作用域),换句话说这类函数能够记忆创建它们时的环境(很难理解)

栗子3:

function Person() {

    var name = 'itxing';

    function getName() {

        console.log(name)

    }

    return getName

}

var man = Person();

man()  //  'itxing'

函数getName能够访问函数Person内部的变量,那么函数getName变量name这整个环境就可以称之为闭包。在这里man就成了一个闭包,这个闭包由getName()和字符串“itxing”组成。

闭包就是能够读取其他函数内部变量的函数

三、闭包的优缺点

优点:延长外部函数局部变量的生命周期

缺点:容易造成内存泄漏

相关文章

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • 简单的聊一下闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 浅谈闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • php之闭包函数(Closure)

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

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

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

  • JS闭包

    JS闭包 闭包练习

  • 再谈JS闭包(JS闭包系列2)

    这篇文章,来继续谈谈Javascript闭包的剩余问题。因为在上一篇文章中关于JS闭包(JS闭包系列1)主要简单的...

  • 2018-01-10

    js中的闭包 一.什么是闭包 闭包官方的解释是:闭包就是能够读取其他函数内部变量的函数。由于在javascr...

  • js经典题目

    1闭包 链接:学习Javascript闭包(Closure) setTimeout在js单线程中只是放在队列中并未...

  • 前端面试题(持续补充)

    js,node.js基础: 闭包 闭包是能够读取其他函数内部变量的函数。在js中,只有函数内部的子函数可以访问内部...

网友评论

      本文标题:Js中的闭包

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