javascript - 尝试用 JavaScript 创建非常简单的闭包

标签 javascript groovy closures

所以我正在观看这个视频,在 18:14 他有一个展示编程语言“Groovy”中的闭包的示例。 https://www.youtube.com/watch?v=7aYS9PcAITQ

JavaScript 可以使用闭包以相同的方式“保存”实例吗?如果可以,有人可以打包一些代码示例供我学习吗? 我一直在阅读 JavaScript 中的闭包,基本上我知道,如果函数内有一个函数,并且外部函数返回,则内部函数可以保持事件状态,这就是闭包的一部分。

def makeCounter() {
    def very_local_variable = 0
    return { very_local_variable += 1 }
}

c1 = makeCounter()
c1()
c1()
c1()

c2 = makeCounter()

println "C1 = ${c1()}, C2 = ${c2()}"

OUTPUT and closures:
C1 = 4, C2 = 1

最佳答案

function makeCounter() {
    var very_local_variable = 0;
    return function() { return very_local_variable += 1; };
}

var c1 = makeCounter();
c1();
c1();
c1();

var c2 = makeCounter();

console.log("C1 = ", c1(), " C2 = ", c2());

关于javascript - 尝试用 JavaScript 创建非常简单的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848873/

相关文章:

java - 在 Groovy 中编码时, "->"lamda 运算符有什么问题?

javascript - 如何调用一个只传递到另一个函数两次的函数?

swift - “弱”可能只适用于类和类绑定(bind)协议(protocol)类型,而不是 'ContentView' 我缺少什么?

javascript - 带有 ObjectId 的 Mongoose 中的嵌套数组

javascript - jquery Map() 不适用于 html 列表

javascript - 如何让一个实体触发不同实体的鼠标悬停事件(D3)

ant - Gradle Task-使用不同的PID多次执行

java - 将 sourcesJar 任务添加到自定义 Gradle 插件

javascript - 如何获取post/get中多选下拉值的所有选定值?

grails - 将文件的内容显示到grails页面?