我从过去 3 个月开始使用 javaScript,但无法理解关于闭包的一些事情:
- 用这种语言解决了什么问题?
- 我什么时候应该使用闭包?
- 它与性能有关还是仅与最佳实践有关?
我阅读了JavaScript 闭包是如何工作的?,有很好的解释,但我无法回答上述问题。
我从过去 3 个月开始使用 javaScript,但无法理解关于闭包的一些事情:
我阅读了JavaScript 闭包是如何工作的?,有很好的解释,但我无法回答上述问题。
这是一个闭包示例:
var items = ["a","b", "c"];
var displayItem = function (i) {
return function () {
alert(items[i]);
}
}
for (var i = 0; i < items.length; i++) {
window.setTimeout(displayItem(i), 100);
}
闭包保存函数的上下文信息。在此示例中,如果计数器和 items 数组,则闭包会保留数字。如果我不使用闭包,conter 会发生变化,所有警报都会显示未定义(var i 应该是 3)。
您正在使用闭包,但您可能没有注意到。没有关于何时使用它们的规则。在其他函数中声明函数时,您正在创建闭包。在这个例子中,我只用我需要的数据创建了一个闭包。但是 displayItem 函数创建了一个闭包,允许他访问 items 数组。
使用闭包可能会出现性能问题,因为您会强制浏览器在内存中保留更多数据。所以人们不会将它用于性能,也不会作为最佳实践,它只是解决某些问题的另一种工具。