在我学习 javascript closure 的同时,我在w3schools上遇到了一个示例,该示例使用立即执行的函数为函数提供私有变量:
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
但对我来说,所有立即执行的函数都执行正文中的语句,如果我没记错,可以通过关键字 new
来完成
var add = new function () {
var counter = 0;
return function () {return counter += 1;}
};
document.write("return" + add()+ "<br>"); // return 1
document.write("return" + add() +"<br>"); // return 2, works the same as the example on w3school
新显然更复杂,它创建了一个新对象......但我认为你没有义务使用该对象(最后添加一个return语句)。
我的问题是:立即执行的功能可以做些什么,而新关键字却无法做到?或者你总能用后来替换第一个?