闭包

闭包指的是哪些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

function createComparisonFunction(propertyName) {
    return function (object1, object2) {
        let value1 = object1[propertyName]
        let value2 = object2[propertyName]

        if (value1 < value2) {
            return -1;
        } else if (value1 > value2) {
            return 1;
        } else {
            return 0;
        }
    }
}

在一个函数内部定义的函数会将其包含函数的活动对象添加到自己的作用域链中。因此,在createComparisonFunction函数中,匿名函数的作用于实际上包含createComparisonFunction的活动对象。