美文网首页
[JS]闭包与块级作用域

[JS]闭包与块级作用域

作者: 泉落云生 | 来源:发表于2018-05-13 23:01 被阅读63次

什么是闭包?
函数嵌套函数,函数的返回值是函数。
特点:

  • 函数内部的函数所引用的变量会被保存下来
  • 由于内部函数所引用的外部变量会被保存下来 所以变量会一直在内存中保存直到浏览器被关闭,垃圾回收机制失效。(造成内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题)
    应用场景:
  • 局部变量的累加
  • 自执行的匿名函数保存循环变量
//点击弹出下标
        var aBtn = document.getElementsByTagName('input');
        //闭包写法
        for(var i = 0;i<aBtn.length;i++){
            (
                function(i){ //接受闭包的(i)
                    aBtn[i].onclick = function(){
                        alert(i)
                    }
                }
            )(i)//传参 for循环的i
        }
        
        //使用块级作用域后
        for(let i = 0;i< aBtn.length;i++){
            aBtn[i].onclick = function(){
                alert(i)
            }
        }

闭包里面thisd的作用域
内部函数的this指向外部包裹它的作用域

相关文章

  • 14.JS基础之作用域与闭包

    作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 常见的闭包有:作为函数返回值的闭包与作为函数参数的闭包...

  • js闭包学习的一点体会

    什么是闭包? 在谈闭包之前,先要了解一下作用域的问题。在js中,块级作用域(大括号中的领域)是不存在的,在块级作用...

  • ES5的关键知识点

    闭包 闭包解决案例无块级作用域导致的一些错误。因为ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合...

  • 2023-01-12

    变量提升调用栈块级作用域作用域链和闭包 闭包 => 作用域链(词法作用域) => 调用栈(栈溢出) => 上下文...

  • [JS]闭包与块级作用域

    什么是闭包?函数嵌套函数,函数的返回值是函数。特点: 函数内部的函数所引用的变量会被保存下来 由于内部函数所引用的...

  • 3-6 作用域和闭包--作用域-代码演示

    3-6 作用域和闭包--作用域-代码演示 知识点1、块级作用域

  • JS作用域

    一.前言 都知道JS存在三种作用域,即全局,函数,块级。其实是没有块级作用域的,但我们可以通过闭包来实现它。 二....

  • 闭包及获取内部方法

    闭包获取内部方法。 闭包的概念 作用域、作用域链(防止内存泄漏) 避免泄漏,写在匿名函数中,模仿块级作用域。这样匿...

  • 20-闭包

    来源之所以有闭包是因为js中特殊的作用域。JS中并不存在像其它语言的块级作用域,JS中一个函数就是一个作用域。变量...

  • 2018-01-07 关于javascript闭包和作用域的理解

    关于 javascript 闭包的一些思考 作用域 词法作用域 函数作用域 块作用域 闭包 什么是作用域? 作用域...

网友评论

      本文标题:[JS]闭包与块级作用域

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