# Vue2 computed 和 watch 的区别

# computed

计算属性

  • 当计算属性依赖的值发生变化时,触发计算,并返回最新的值。
  • 计算属性结果会被缓存,除非依赖的属性值发生变化才会重新计算。
  • 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
  • computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值

computed 源码解析

# watch

侦听属性

  • 监听某一个值,当被监听的值发生变化时,执行对应的操作
  • watch里面有一个属性为deep,含义是:是否深度监听某个对象的值, 该值默认为false。
  • watch里面有一个属性为immediate,是否在初始化的时候监听生效,默认是false;
  • watch支持异步;
  • 监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
  • 监听数据必须是data中声明过或者父组件传递过来的props中的数据,当数据变化时,触发其他操作,函数有两个参数,