MENTAL MODEL
先建立心智模型
JavaScript 程序可以看成:值在作用域之间流动,函数把输入映射为输出,闭包让函数携带创建时的环境。React 的组件与 Hook 都建立在这个模型之上。
React Atlas
交互式学习地图
值、执行与作用域
建立真正能解释运行结果的语言模型,而不是只记语法。理解值如何流动、函数如何执行、变量如何被捕获。
MENTAL MODEL
JavaScript 程序可以看成:值在作用域之间流动,函数把输入映射为输出,闭包让函数携带创建时的环境。React 的组件与 Hook 都建立在这个模型之上。
LESSON 01 / 06
学习目标
能判断一次赋值或函数传参后,两个变量是否仍指向同一份数据。
核心讲解
原始值会复制值本身;对象、数组和函数赋值时复制的是引用。修改对象内部属性会被所有持有同一引用的变量观察到,但重新赋值只会改变当前变量的指向。
动手验证
创建一个 user 对象并赋给 backup:先修改 user.name,再把 user 整体替换为新对象。分别预测并打印 backup.name。
过关问题
为什么展开运算符只能完成一层浅拷贝?
function createCounter(initial = 0) {
let count = initial
return {
read: () => count,
increment: () => ++count,
}
}
const counter = createCounter(2)
counter.increment() // 3
counter.read() // 3PRACTICE
实现一个 createHistory():支持 push(value)、undo() 和 current(),内部状态不能被外部直接修改。