let {week} = data[k] || {}
//data[k] 是个对象,{week:null},并不是一个值
//week 也是个对象,{week:week}
默认值生效的条件是,对象的属性值严格等于undefined。所以,取不到默认值只有一个情况,那就是后面已经有值了,null 不严格等于 undefined ,所以,如果后面的值是null的话,它就会取null
看一下es6入门官方文档https://es6.ruanyifeng.com/#docs/destructuring

本文深入探讨了ES6中解构赋值的默认值特性,特别指出当对象属性值为null时,不会触发默认值。通过官方文档解析,了解到默认值生效的条件是属性值严格等于undefined。因此,即使属性值为null,也会被直接使用,而非取默认值。理解这一细节对于编写JavaScript代码至关重要。
810





