Javascript 通过内部函数听取局部变量的变化

Javascript 通过内部函数听取局部变量的变化,javascript,closures,Javascript,Closures,函数init(){ var name=“坏的”; 函数getName(){ console.log(名称); } 函数集合名(newName){ name=newName; } 返回{ getName:getName, setName:setName }; } const sayMyName=init().getName;//初始化期间 init().setName('Heisenberg');//可以在以后多次更新 sayMyName();//不是最新的,即不是海森堡 PS:我试过了,但在之后

函数init(){
var name=“坏的”;
函数getName(){
console.log(名称);
}
函数集合名(newName){
name=newName;
}
返回{
getName:getName,
setName:setName
};
}
const sayMyName=init().getName;//初始化期间
init().setName('Heisenberg');//可以在以后多次更新
sayMyName();//不是最新的,即不是海森堡
PS:我试过了,但在之后找不到stackoverflow的解决方案
阅读许多关于内部函数、闭包等的答案

因为当你这么做的时候

init().setName('Heisenberg'); 
您最终将名称设置为不同的
init()
引用,因为每次调用
init
时,它都会返回不同的
getName
setName
引用

成功

函数init(){
var name=“坏的”;
函数getName(){
console.log(名称);
}
函数集合名(newName){
name=newName;
}
返回{
getName:getName,
setName:setName
};
}
var init1=init()//保存初始化
var sayMyName=init1.getName;
init1.setName('Heisenberg');//可以在以后多次更新

sayMyName()当您调用
init()
时,您将返回一个新对象。所以它总是给你初始值。如果您解释您希望实现的目标,我们可以用其他解决方案帮助您。我冒昧地将您的代码示例转换为可运行的代码段。提示一下,当一个问题包含一个片段时,您可以单击“复制片段以回答”按钮,这样它也将成为您答案中的一个片段。@MichaelGeary谢谢,反正我也要这么做:)