不同点:
1.写法上的不同
computed:一定要有return
watch:不一定
2.出入参上的不同
computed: 多个入参一个出参(多个参数合在一起的变化,新生成一个新的数据)
watch: 单个入参多个出参(一个数据变化后,可以做一系列的操作)
3.性能上
computed: 会自动diff依赖,如果没有依赖没有变化,就直接取缓存里的数据
watch: 不会自动diff, 有变化后只能在回调里取值
4.执行时机上
computed: 一旦生成就立马会执行
watch: 首次并不默认执行,只有打开immediate才会首次执行
相同点:
1:变化都是通过Object.defineProperty的set方法去获取的
2:都是对于数据有变化时做相关操作