美文网首页React
什么是闭包?闭包的用途是什么?

什么是闭包?闭包的用途是什么?

作者: Save_Onfir3 | 来源:发表于2018-10-12 15:48 被阅读0次

什么是闭包:

如果一个函数用到了它作用域外面的变量,那么这个变量和这个函数之间的环境就叫闭包。

var a = 5
function xx(){
    console.log(a)
}
//5

闭包的用途有些什么:

1.模仿块级作用域

所谓块级作用域就是指在循环中定义的变量,一旦循环结束,变量也随之销毁,它的作用范围只在这一小块。而在JavaScript中没有这样的块级作用域,由于JavaScript不会告诉你变量是否已经被声明,所以容易造成命名冲突,如果在全局环境定义的变量,就会污染全局环境,因此可以利用闭包的特性来模仿块级作用域。

function X(num) {
    (function(){
        for(var i = 0; i < num.length; i++){
            num++
        }
    }).call() //声明一个函数立即调用以后,浏览器刷新页面会报错,可以用一个小括号把整段函数包起来。
    console.log(i)//undefined
}

在上面的代码中,闭包就是那个匿名函数,这个闭包可以当函数X内部的活动变量,又能保证自己内部的变量在自执行后直接销毁。这种写法经常用在全局环境中,可以避免添加太多全局变量和全局函数,特别是多人合作开发的时候,可以减少因此产生的命名冲突等,避免污染全局环境。

2.储存变量

闭包的另一个特点是可以保存外部函数的变量,内部函数保留了对外部函数的活动变量的引用,所以变量不会被释放。

function S(){
    var a = 1
    return {
        function(){
            renturn a
        }
    }
}
var d = S() // 100

这种写法可以用在把一些不经常变动计算起来又比较复杂的值保存起来,节省每次的访问时间。

3.封装私有变量

我们可以把函数当作一个范围,函数内部的变量就是私有变量,在外部无法引用,但是我们可以通过闭包的特点来访问私有变量。

var person = function(){
    //变量作用域为函数内部,外部无法访问
    var name = "default";
    return {
        getName : function(){
            return name;
        },
        setName : function(newName){
            name = newName;
        }
    }
}();
print(person.name);//直接访问,结果为undefined
print(person.getName()); // default
person.setName("abruzzi");
print(person.getName()); // abruzzi

相关文章

  • 前端常见问题总结

    什么是闭包?闭包的用途是什么?闭包的缺点是什么? 什么是闭包 闭包:内部函数总是可以访问其所在的外部函数中声明的参...

  • 闭包、call-apply-bind 的用法 、HTTP状态码

    一、什么是闭包?闭包的用途是什么?闭包的缺点是什么? 答 :1、什么是闭包:如果一个函数用到了外部的变量,那么这个...

  • 闭包,call、apply、bind 的用法,HTTP 状态码

    什么是闭包?闭包的用途是什么?闭包的缺点是什么?• 闭包:如果一个函数用到了外部的变量,那么这个函数加这个变量就叫...

  • 闭包的理解

    什么是闭包,闭包的用途是什么? 闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部...

  • 闭包的总结

    围绕:闭包是什么?闭包的用途有哪些?闭包的缺点是什么? 这三个问题来进行总结 一、何为闭包?如果一个函数用到了外部...

  • 什么是闭包?闭包的用途是什么?

    什么是闭包: 如果一个函数用到了它作用域外面的变量,那么这个变量和这个函数之间的环境就叫闭包。 闭包的用途有些什么...

  • 什么是闭包?闭包的用途是什么?

    闭包的概念: 闭包是指有权访问另一个函数作用域中的变量的函数。如以下代码: 在outside函数内部定义的函数in...

  • 什么是闭包,闭包的用途是什么?

    什么是闭包? 闭包:如果一个函数使用了它范围外的变量,那么 这个函数+这个变量 就是闭包。 这函数 最后 输出的 ...

  • 什么是闭包,闭包的用途是什么?

    闭包是由函数和函数内部能访问到的变量组成的,在js中函数内部可以直接读取全局变量,而当我们想要得到函数内局部变量的...

  • 闭包的理解

    闭包目的: 闭包三个特性: 闭包的用途: 闭包的优点: 闭包的缺点: 参考文献: https://zhuanlan...

网友评论

    本文标题:什么是闭包?闭包的用途是什么?

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