看下面的代码:

<script type="text/javascript">
    function createSumFunction(num1, num2){
        return function () {
            return num1 + num2;
        };
    }

    var sumFun = createSumFunction(3, 4);
    var sum = sumFun();
    alert(sum);
</script>

在上面的代码中,createSumFunction函数返回了一个匿名函数,

而这个匿名函数使用了createSumFunction函数中的局部变量(参数),

即使createSumFunction这个函数执行结束了,由于作用域链的存在,他的局部变量在匿名函数中仍然可以使用

这个匿名函数和他的作用域链一起就称为闭包。

闭包是指有权访问另一个函数作用域中的变量的函数。

闭包是一种特殊的对象。

它由两部分构成: 函数,以及创建该函数的环境

环境由闭包创建时在作用域中的任何局部变量组成。在我们的例子中,sumFun 是一个闭包,由 匿名 函数和闭包创建时存在的num1num2 两个局部变量组成。

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-10-18 03:19:29

results matching ""

    No results matching ""