gpt4 book ai didi

javascript - javascript中闭包的具体现实生活应用

转载 作者:行者123 更新时间:2023-11-29 17:51:39 27 4
gpt4 key购买 nike

我已经使用 JS 两年了,我的 pluralsight accessment 认为我精通 JS,我理解原型(prototype)继承、高阶函数、IIFE 等,我在现实世界的实例中使用过它们,但闭包是你认为的那些概念之一理解但找不到任何你想要在现实世界开发中使用它们的理由,我的意思是我知道如果我说,

function expClosure(val){
//do something to val-->anotherVal
return function(val){return anotherVal)};
}
var exp = expClosure(val);
exp(); --> returns the value of anotherVal;

我的问题是我为什么要这样做,或者更确切地说是什么具体情况可以让我考虑使用它。

最佳答案

闭包的主要好处是您可以使用闭包“部分应用”一个函数,然后传递部分应用的函数,而不需要传递未应用的函数,以及您需要调用它的任何数据(非常有用,在很多场景下)。

假设您有一个函数f,将来需要 2 条数据才能运行。一种方法是您可以在调用它时将这两个部分作为参数传入。这种方法的问题是,如果第一条数据立即可用,而第二条数据不可用,则您必须使用 f 传递它,以便在您想要调用功能。

另一种选择是立即将可用数据提供给函数。您可以在数据上创建闭包,让函数引用外部数据,然后自行传递函数。

选项 2 简单得多。

您还可以使用闭包在函数中使用本身不支持闭包的语言来实现静态变量。 Clojure(语言)通过返回传递函数的修改版本来实现它的 memoize 函数,该函数包含对表示参数/返回值对的映射的引用。在函数运行之前,它首先检查参数是否已经存在于映射中。如果他们这样做,它返回缓存的返回值而不是重新计算它。

(改编自 from my answer to another question)

关于javascript - javascript中闭包的具体现实生活应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015817/

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