我正在尝试在函数内动态创建预定义的私有(private)变量。 我使用的概念是从闭包 block 内返回函数 像这样:-
var bar = (function (){
var foo = "Hello World";
return function () {
console.log(foo);
}
}());
bar();
这是我用来创建上述执行的等效动态表达式的代码
var createClosure = function(fn) {
var __fn = function () {
var foo = "Hello World";
return fn;
}
return __fn();
}
var bar = createClosure(function () {
console.log(foo);
});
bar();
但是运行上面的代码给了我ReferenceError: foo is not Defined
从闭包 block 返回的函数的等效表示应该是什么?
最佳答案
这是您能得到的最接近的结果:
function createClosure(fn) {
const baz = {};
baz.foo = "Hello World";
return () => fn(baz);
}
const bar = createClosure(baz => console.log(baz.foo));
bar();
或者直接传入 foo
作为参数。但你不能仅仅让 foo
存在于另一个作用域中。因此,您显然可以将其全局化,但这也不是一个好主意。
关于javascript在函数内动态创建预定义的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687484/