[英]javascript create predefined private variable inside a function dynamically
我正在尝试在函数内部动态创建预定义的私有变量。 我正在使用的概念是闭包中的函数返回,例如:
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
从闭合块返回的函数的等效表示形式是什么?
这与您所获得的尽可能接近:
function createClosure(fn) {
const baz = {};
baz.foo = "Hello World";
return () => fn(baz);
}
const bar = createClosure(baz => console.log(baz.foo));
bar();
或者直接将foo
作为参数传递。 但是,您不能仅仅使foo
存在于另一个作用域中。 因此,您显然可以将其设置为全球范围,但这也不是一个好主意。
如果这是正确的方法,这是我找到的出路,请告诉我。
var createClosure = function(fn) { var __fn = function () { var foo = "Hello World"; var entire = fn.toString(); var body = entire.substring(entire.indexOf("{") + 1, entire.lastIndexOf("}")); return function () { eval(body); } } return __fn(); } var bar = createClosure(function () { console.log(foo); }); bar();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.