Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中重写闭包变量?_Javascript_Variables_Scope_Closures_Overriding - Fatal编程技术网

如何在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;icode.getSettings('settings');
在获得声誉之前,请检查下面的代码。你的意思是分享你的知识吗。这与其说是一个问题,不如说是一个社区wiki。谢谢!为什么不->
返回{settings:settings}
?您想做什么。通常不赞成使用
eval
。我知道,但仍然希望设置新的闭包变量,该变量以前已经有一个旧值。每个代码都有一个循环孔,所以这就是其中之一。当您试图在ready pr中创建自定义挂钩时,在这种情况下会使用这种类型的代码用JavaScript开发的项目。当时需要覆盖一些默认变量,因为您不需要旧值。