<分区>
我在 w3schools 上阅读了这个关于 Javascript 闭包应用于“反困境”的例子:
https://www.w3schools.com/js/js_function_closures.asp
在实际使用中,这个例子看起来几乎是无稽之谈。当我无法保护包含函数本身的变量“add”时,为什么我应该将变量“counter”包装到一个闭包中,以防止在全局范围内被意外修改?
更具体地说...我有这段代码:
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add();
// the counter is now 3
W3schools 在开始时说:“问题是,页面上的任何脚本 [在全局范围内] 都可以更改计数器,而无需调用 add()。”...建议将上面的闭包作为解决方案。好的。但是如何保护“添加”不被订阅呢?这使得变量仍然“易受攻击”。
那么,闭包实现的优势是什么?