gpt4 book ai didi

javascript - ES6 对象.assign() : why do undefined properties override defined properties?

转载 作者:行者123 更新时间:2023-11-30 14:08:32 24 4
gpt4 key购买 nike

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

console.log(Object.assign({ a: 1, b: 2 }, { a: 3, b: undefined }));

This question询问提供后者输出而不是前者输出的函数,但我的问题是为什么 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()时它仍然会覆盖非空非未定义值。 .

最佳答案

{ a: 3 } 有一个属性,其键是字符串“a”。您可以通过返回 ["a"]Object.keys({a:3}) 观察这一点。

{ a: 3, b: undefined } 有两个属性,一个叫做a,另一个叫做b。调用 Object.keys({a: 3, b: undefined}) 返回 ["a", "b"]

Object.assign 使用每个传入对象上存在的任何(可枚举)属性的值,并且 assign 的规范不会专门处理属性恰好发生的情况具有值 undefined

关于javascript - ES6 对象.assign() : why do undefined properties override defined properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54893110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com