当Object.assign()的源对象为null和undefined时,究竟会不会跳过这些参数?发生了些什么?

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时,究竟发生了些什么?

阅读 5.4k
1 个回答

想知道具体原理,就从 mdn 下方点击规范

If nextSource is undefined or null, let keys be an empty List.

let result = Object.assign({ position: '新西兰' }, null, undefined, { name: '张三' });

等价于:

let result = Object.assign({ position: '新西兰' }, {}, {}, { name: '张三' });

并且 mdn 说的是 null 和 undefined,阮一峰 说得是

如果非对象参数出,,,

非对象不仅仅是 null 和 undefined 吧,,,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题