小编Dom*_*cum的帖子

ES6 Object.assign():为什么未定义的属性会覆盖已定义的属性?

为什么以下代码片段返回{ a: 3, b: undefined }而不返回{ a: 3, b: 2 }

console.log(Object.assign({ a: 1, b: 2 }, { a: 3, b: undefined }));
Run Code Online (Sandbox Code Playgroud)

这个问题询问一个提供后者输出而不是前者输出的函数,但我的问题是为什么要Object.assign()这样设计?或者换句话说,{ a: 3 }和 之间到底有什么区别{ a: 3, b: undefined }

更新(来自 apsillers 答案的评论):

{ a: 1 }说“我没有名为‘b’的属性”,{ a: 1, b: undefined }说“我有一个属性‘b’,但尚未给它赋值”,并{ a: 1, b: null }说“我有一个属性‘b’,它应该保存一个对象,但还没有却被给予了一个可以持有的物体”。由于在后两者中对象有一个属性“b”,因此无论该值是什么,它在传递给 时仍然会覆盖非空非未定义的值Object.assign()

javascript ecmascript-6

4
推荐指数
1
解决办法
3092
查看次数

标签 统计

ecmascript-6 ×1

javascript ×1