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();
相关文章:
- Javascript变量未定义,onchange不起作用
- TinyMCE保留预定义的html结构
- 定义的变量未定义
- 无法弄清楚为什么本机 Promise 变量未定义
- Windows 8 Javascript 疯狂 - 变量未定义
- $rootScope变量未定义
- 变量未定义
- 自定义角度过滤器提供TypeError.不能调用undefined,但变量已定义并有效
- Javascript:TypeError变量未定义
- 变量未定义/超出范围
- javascript变量未定义
- Javascript变量未定义错误
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 如何设置方法,该方法只能删除元素的预定义值
- 类型错误:变量未定义
- 未指定预定义 el 而不呈现的主干视图
- AngularJs $http变量未定义
- JQuery:创建扩展返回变量未定义
- 用变量预填充 HTML 值
- 由于异步函数延迟执行和完成,变量返回预定义值