JS闭包的定义和使用

闭包的问题一直没搞太清楚,努力搞明白中……前置知识:作用域和作用域链。

概述:

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

    创建闭包的常见方式就是在一个函数的内部创建另一个函数。在另一个函数中,内部定义的函数会将包含函数(即外部函数)的活动对象添加到它的作用域中。

function ceatComparisionFunction(propertyName){
    return function(obj1,obj2){
    var val1=obj1[properyName];
    var val2=obj2[properyName];
    if(val1val2){
        reutrn 1;
    }else{
        return 0;
    }
    };
}

    加粗的两行代码是内部函数中的代码,访问了外部函数中的变量propertyName,内部函数能够访问外部函数的原因是内部函数的作用域链中包含了趁热爱他Com怕日死onFunction()的作用域。

     应用闭包的两种情况:

    (1)函数作为返回值;   

    (2)函数作为参数传递。

这篇博文写的挺详细的: https://blog.csdn.net/yummy_go/article/details/50663081

你可能感兴趣的:(前端学习)