let result = Object.assign({ position: '新西兰' }, null, undefined, { name: '张三' });
// { position: "新西兰", name: "张三" }
MDN上是这样的 https://developer.mozilla.org...
注意,Object.assign 不会跳过那些值为 null 或 undefined 的源对象。
阮一峰的文章是这样的 http://es6.ruanyifeng.com/#do...
如果非对象参数出现在源对象的位置(即非首参数),那么处理规则有所不同。首先,这些参数都会转成对象,如果无法转成对象,就会跳过。这意味着,如果undefined和null不在首参数,就不会报错。
请问当Object.assign()的源对象为null和undefined时,究竟发生了些什么?
想知道具体原理,就从 mdn 下方点击规范
let result = Object.assign({ position: '新西兰' }, null, undefined, { name: '张三' });
等价于:
let result = Object.assign({ position: '新西兰' }, {}, {}, { name: '张三' });
并且 mdn 说的是 null 和 undefined,阮一峰 说得是
非对象不仅仅是 null 和 undefined 吧,,,