为什么要使用这个 javascript 箭头函数或者有什么区别?

Why to use this javascript arrow function or what is the difference?

我偶然发现了这个相对简单的箭头函数:

var x = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
console.log(x());

我大致了解它的作用。但是为什么这件事会这么复杂呢?我的意思是,同样的事情可以更容易地完成,并且 (imo) 也具有更好的可读性:

var x = ([a, b] = [1, 2], c = a + b) => a + b + c;
console.log(x());

那么有人可以告诉我这两种表示法的区别,或者给我展示第一种更好的用例吗?

第一个符号将带有 属性 x 的对象作为第二个参数。它被解构并且 x 被提取为 c。如果未定义,则使用带有 属性 x 的默认对象:

console.log(x([1, 2], {x: 5}));

而第二个采用简单参数原始参数(在本例中可能是数字):

console.log(x([1, 2], 5));

因此,唯一的区别是输入函数的第二个参数。

你的第二个例子的第二个参数是一个简单的 es6 默认初始化,而你的第一个例子的第二个参数也是一个简单的带有解构的 es6 默认初始化。 但是,我想你已经知道了。

你的问题的另一部分是,给我看第一个更好的用例?

当您想从一个巨大的 javascipt 对象访问一个键时,解构主要有用;

像这样:

 aHugeJavascriptObject = {
   key1:'value1',
   .
   .
   .
   key999:'value999'
 }

现在,访问对象键 key999 的一种方法是 aHugeJavascriptObject.key999,而您可能想这样做

 const { key999 } = aHugeJavascriptObject

我还假设你已经知道了。 但是,恐怕这就是你的问题。