如何在JavaScript中重写闭包变量?
闭包是函数和声明该函数的词汇环境的组合 但由于闭包环境中定义的私有变量并没有被外部范围覆盖 但我仍然想覆盖闭包变量。这怎么可能如何在JavaScript中重写闭包变量?,javascript,variables,scope,closures,overriding,Javascript,Variables,Scope,Closures,Overriding,闭包是函数和声明该函数的词汇环境的组合 但由于闭包环境中定义的私有变量并没有被外部范围覆盖 但我仍然想覆盖闭包变量。这怎么可能 (function() { var foo = 'Hello John'; function baz(){ return foo; } })(); 现在,将变量foo的值重写为其他变量,例如早上好如何重写JavaScript闭包变量 因为闭包变量具有私有作用域,不能在其作用域之外访问 但是我们可以设置和获取闭包变量。请参阅下
(function() {
var foo = 'Hello John';
function baz(){
return foo;
}
})();
现在,将变量
foo
的值重写为其他变量,例如早上好
如何重写JavaScript
闭包变量
因为闭包变量具有私有作用域,不能在其作用域之外访问
但是我们可以设置和获取闭包变量。请参阅下面的示例,它可以帮助您解决问题
let code=(函数($){
函数变量导出(mixedExpression,boolReturn){
var echo=console.log;
var retstr=''
var-iret=''
var值
var cnt=0
变量x=[]
变量i=0
var funcParts=[]
//我们使用最后一个参数(不是PHP的一部分)传入
//我们的缩进水平
var idtLevel=参数[2]| | 2
var innerIndent=''
var outerIndent=“”
var getFuncName=函数(fn){
变量名=(/\W*函数\s+([\W$]+)\s*\(/).exec(fn)
如果(!name){
return'(匿名)'
}
返回名称[1]
}
var_makeIndent=函数(idtLevel){
返回(新数组(idtLevel+1))
.加入(“”)
}
var\uuu getType=函数(inp){
变量i=0
变量匹配
变量类型
变量cons
变量类型=输入类型
if(type=='object'&&(inp&&inp.constructor)&&
getFuncName(inp.constructor)=='Locustus\u Resource'){
返回“资源”
}
如果(类型=='函数'){
返回“函数”
}
如果(类型=='object'&&&!inp){
//这应该是空的吗?
返回“null”
}
如果(类型==‘对象’){
if(!inp.constructor){
返回“对象”
}
cons=inp.constructor.toString()
match=cons.match(/(\w+)\(/)
如果(匹配){
cons=匹配[1]。toLowerCase()
}
类型=['boolean'、'number'、'string'、'array']
对于(i=0;i code.getSettings('settings');
在获得声誉之前,请检查下面的代码。你的意思是分享你的知识吗。这与其说是一个问题,不如说是一个社区wiki。谢谢!为什么不->返回{settings:settings}
?您想做什么。通常不赞成使用eval
。我知道,但仍然希望设置新的闭包变量,该变量以前已经有一个旧值。每个代码都有一个循环孔,所以这就是其中之一。当您试图在ready pr中创建自定义挂钩时,在这种情况下会使用这种类型的代码用JavaScript开发的项目。当时需要覆盖一些默认变量,因为您不需要旧值。