繁体   English   中英

javascript在函数内部动态创建预定义的私有变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM