我偶然发现了这个相对简单的箭头功能:
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());

那么有人可以告诉我这两个符号的区别,还是让我看到第一个更好的用法?
答案 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));
唯一的区别就是输入函数的第二个参数。