javascript - JavaScript 中的过时闭包问题
问题描述
我正在重新审视关闭,我偶然发现了以下问题,我无法真正理解,有人可以帮我解决以下问题吗?
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 吗?在 body 中发生了什么setValue
以某种方式更新了 in 的值value
?
谢谢!
解决方案
闭包关闭变量,而不是值。
v
关闭了。setValue
变化v
value
读取v
。
推荐阅读
- nuxt.js - 我需要一个用于服务器端渲染 Nuxt.js 应用的图像灯箱
- sass - 我在编译 SCSS 时收到一条错误消息,其中指出缺少 }
- java - 从 Spring Boot 应用程序连接到本地 MySQL 数据库时出错
- swift - Xcode 12.2:错误:IB Designables:无法渲染和更新 ViewController (BYZ-38-t0r) 的自动布局状态:无法启动 designables 代理
- php - 表单发布脚本不适用于新字段
- reactjs - 如何正确使用 react-native-startup-time?
- regex - BigQuery REGEX 获取 2 个字符之间的文本
- javascript - 为什么 Window.Open 打印出 html 而不是渲染它?
- html - 如何在其背景图像上垂直居中 h1 文本?
- excel - 我正在尝试搜索单元格标题 UPC,然后在 UPC 右侧添加 4 列具有特定名称