最近,我一直在尝试学习 JavaScript 中的私有变量和闭包。我刚刚了解了 IIFE 以及它们如何与闭包一起使用来创建“私有”变量和函数。下面是我理解的一个例子。
let test = (function() {
let name = "";
let getName = function() {
return name;
}
let setName = function(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
})();
test.setName("Bob");
test.getName(); // "Bob"
test.name; // undefined
然而,这让我想知道,为什么我不能用一个正则函数表达式来完成这个,然后调用这个表达式,然后把它保存到一个变量中。这个新变量也将有一个私有名称值。例如:
let test2 = function() {
let name = "";
let getName = function() {
return name;
}
let setName = function(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
}
let test3 = test2();
test3.setName("Bob");
test3.getName(); // "Bob"
test3.name; // undefined
IIFE 方法与我在定义它后立即调用的正则函数表达式相比有什么好处吗?
谢谢!