本段代码的冒号是什么语法呢? ({ ...acc, [key]: fn(key, a[key], b[key]) })

看30 seconds of code看到的
深度合并两个对象,使用函数来处理两者中存在的键。
https://www.30secondsofcode.org/js/s/deep-merge

const deepMerge = (a, b, fn) =>
  [...new Set([...Object.keys(a), ...Object.keys(b)])].reduce(
    (acc, key) => ({ ...acc, [key]: fn(key, a[key], b[key]) }),
    {}
  );
阅读 2k
2 个回答

冒号不是特殊语法。他就是定义对象 ({a:1,b:2}) 同理。 [a] 则是把 a 当作一个变量,用值来当 key

image.png

这段代码里的冒号就是对象的属性和值中间的冒号,
属性是变量所以可以用方括号的形式。

const key = 'foo';
const obj = {
  [key]: 'bar'
};
// obj
// {foo: "bar"}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏