在 Vue 3 中, 和 都是用于响应式数据的副作用(Side Effect)处理工具(即当数据变化时执行某些操作),但它们在依赖追踪方式、执行时机和获取数据上有着明显的区别。 以下是它们的核心区别总结: 1. 依赖追踪方式 (核心区别) (显式指定依赖): 你需要明确告诉它要监听哪个数据源(ref, reactive 对象, getter 函数或数组)。 它不会追踪回调函数内部访问的变量,只追踪你显式传入的第一个参数。 (自动/隐式收集依赖): 你不需要指定监听谁。 它会自动追踪回调函数内部用到的所有响应式数据。只要函数里用到了某个 ref,该 ref 变化时函数就会重新执行。 2. 执行时机 (初始化) (懒执行 - Lazy): 默认情况下,它不会在组件渲染时立即执行。只有当监听的数据源发生变化时,回调函数才会执行。 注:可以通过配置 让其立即执行。 (立即执行 - Eager): 它在初始化时立即执行一次。这是必须的,因为它需要运行一次代码来知道里面到底用到了哪些数据(从而收集依赖)。 3. 获取新旧值 : 回调函数接收两个参数:。 你可以很方便地拿到变化前后的值,适合做...