为什么要使用这个javascript箭头功能或有什么区别?

时间:2016-08-24 12:09:09

标签: javascript arrow-functions

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



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());




那么有人可以告诉我这两个符号的区别,还是让我看到第一个更好的用法?

2 个答案:

答案 0 :(得分:2)

第二个参数是第二个参数是一个简单的es6默认初始化,而第一个例子的第二个参数再次是一个简单的es6默认初始化和解构。 但是,我认为你已经知道了。

问题的另一部分是,为我展示了第一个更好的用例?

当您想要从巨大的javascipt对象访问密钥时,解构主要是有用的;

这样的事情:

aHugeJavascriptObject.key999

现在,访问对象的密钥 const { key999 } = aHugeJavascriptObject 的一种方法是route,而您可能想要这样做

{{ Form::model($ggXml, ['route' => ['entegra.gg.index', $ggXml->id]]) }}
...
{{ Form::close() }}

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

答案 1 :(得分:1)

第一个表示法采用具有属性x的对象作为第二个参数。它已被解构,x被提取为c。如果未定义,则使用具有属性x的默认对象:

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

而第二个采用简单的参数原始参数(在这种情况下可能是一个数字):

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

唯一的区别就是输入函数的第二个参数。