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
中更新。那么可以安全地说,只有闭合变量才会更新吗?