JavaScript中的过时闭包问题
我正在重温闭包,我遇到了以下问题,我真的无法理解,有人能帮我解决以下问题吗JavaScript中的过时闭包问题,javascript,closures,Javascript,Closures,我正在重温闭包,我遇到了以下问题,我真的无法理解,有人能帮我解决以下问题吗 function Inc(){ let v = 0 let p = v function value() { console.log('p',p) console.log('v', v) } function setValue() { v += 1; console.log(v) } return [value, setValue] }
function Inc(){
let v = 0
let p = v
function value() {
console.log('p',p)
console.log('v', v)
}
function setValue() {
v += 1;
console.log(v)
}
return [value, setValue]
}
let [value, setValue] = Inc()
value() // p 0 , v 0
setValue()
value() // p 0, v1
根据我的理解,闭包与它们创建时使用的原始值接近。在这种情况下,v的值不应该也是0吗?setValue
主体中会发生什么情况,以某种方式更新value
中的值
谢谢 闭包关闭变量,而不是值
关闭v
更改setValue
v
读取值
v
值中的值”
“不,v
在setValue
中更新。那么可以安全地说,只有闭合变量才会更新吗?