gpt4 book ai didi

javascript - 为什么这是一个闭包?

转载 作者:行者123 更新时间:2023-11-28 08:04:10 25 4
gpt4 key购买 nike

我从这个wiki得到了这个代码片段

// Return a list of all books with at least 'threshold' copies sold.
function bestSellingBooks(threshold) {
return bookList.filter(
function (book) { return book.sales >= threshold; }
);
}

维基页面指出这是一个关闭的示例。

这个片段中的闭包在哪里?

据我所知,闭包由两个关键属性组成,一个返回的函数和一个创建该函数的环境。

此外,应该有一些变量的生命周期超出了创建它的函数的范围。

最佳答案

DEMO

我简化了代码以使概念更加清晰。

var threshold = 50;
var retVal = getPastThreshold(threshold);
threshold = 1;
alert(retVal);

function useFunction(someFunction) {
alert(someFunction);
return someFunction(40);
}

// Returns true if number is past 'threshold'.
function getPastThreshold(threshold) {
return useFunction( function (someNumber) { return someNumber >= threshold; });
}

您可以从警报中看到正在传递的函数 someFunction 包含变量阈值,但没有它的值。我们可以看到,threshold 的值不在 var Threshold 的范围内,它经过修改,这样,如果它在范围内,则下一个警报中的 bool 返回值将不是 false 而是 true;但是,从最初调用 getPastThreshold 函数时起,阈值是静态的。这是由于关闭所致。

关于javascript - 为什么这是一个闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com