Kay*_*ast 0 javascript closures
function init() {
var name = "Breaking Bad";
function getName() {
console.log(name);
}
function setName(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
}
const sayMyName = init().getName; // during initialization
init().setName('Heisenberg'); // can be updated multiple times later
sayMyName(); // isn't latest i.e. NOT HeisenbergRun Code Online (Sandbox Code Playgroud)
什么可以做到getName最新name?
PS:我试过了,但是在阅读了关于内部函数,闭包等的许多答案后,却无法在stackoverflow上找到解决方案.
PS:我试过了,但是在阅读了关于内部函数,闭包等的许多答案后,却无法在stackoverflow上找到解决方案.
因为当你做到了
init().setName('Heisenberg');
Run Code Online (Sandbox Code Playgroud)
您最终将名称设置为不同的引用,init()因为每次调用init它时都会返回不同的getName和的引用setName.
做了
function init() {
var name = "Breaking Bad";
function getName() {
console.log(name);
}
function setName(newName) {
name = newName;
}
return {
getName: getName,
setName: setName
};
}
var init1 = init(); //save the initialization
var sayMyName = init1.getName;
init1.setName('Heisenberg'); // can be updated multiple times later
sayMyName();Run Code Online (Sandbox Code Playgroud)