关于#javascript#的问题:写着修复坑爹代码

看到一个提交记录,写着修复坑爹代码。

img

于是我点进去看是怎么个坑爹和改法,发现我看不太懂。

img

img

这是啥?怎么就坑爹了啊?

res作为方法的参数,如果没传参默认就是undefined。
这里的res={}意思是给res初始值设为空对象,如果res有值则方法中res为实际值,如果没有那等于{}而不是默认的undefined。
因为如果res为undefined,...res就会报错了, ... 是es6对数组和对象的扩展,所以需要给res设一个默认值{}

参数赋予默认值也是es6里对函数的扩展,建议先把es6入门从头到尾看一遍,简单易懂https://es6.ruanyifeng.com/#docs/function

img

  1. 首先watch是用来对数据监听的
  2. 然而他对这个res做了空对象处理,可能是出于三个原因:
  3. 1)他想把原来data的值或者传值得到的值直接置为 {}
  4. 2)他觉得组件间的传值干扰到了这个data里面的值,在监听的过程中,所以直接置为{}
    1. 他觉得es6的对象解构的时候出了bug,如果直接使用res的话,没值是undefined,es6无法解构undefined,所以直接置为{}

综述:祝您顺利 希望得到帮助

一个是直接覆盖赋值,一个是合并之后再赋值

可能就是吐槽,这个主要功能就是,监听 obj变化 ,然后合并对象值(newOrg和res合并)

等价于

handler(res){
  this.newOrg = res || {}
}