javascript函数定义中的对象

javascript函数定义中的对象,javascript,function,object,parameters,definition,Javascript,Function,Object,Parameters,Definition,我的朋友只是在做一些没有意义的代码,或者至少我认为他是,但令我惊讶的是,它没有抛出任何错误。然而,这并没有达到他的预期,因为他并不真正知道自己在做什么。 但现在我很好奇它到底做了什么,因为它没有抛出错误肯定是有原因的。 代码如下所示: var n=function(someArg,另一个arg,{help:[]}){}; 此外,将数据添加到对象中时,会抛出一个错误: var n=function(someArg,anotherArg,{help:[“something”]}){}; 抛出:“

我的朋友只是在做一些没有意义的代码,或者至少我认为他是,但令我惊讶的是,它没有抛出任何错误。然而,这并没有达到他的预期,因为他并不真正知道自己在做什么。 但现在我很好奇它到底做了什么,因为它没有抛出错误肯定是有原因的。 代码如下所示:

var n=function(someArg,另一个arg,{help:[]}){};
此外,将数据添加到对象中时,会抛出一个错误:

var n=function(someArg,anotherArg,{help:[“something”]}){};
抛出:“未捕获的语法错误:意外字符串”

那么为什么允许使用随机参数呢?

这是EcmaScript 6。如果将函数定义为:

function myfun({help: [a, b, c]}) {}
然后,您可以将其称为:

myFun({help: [1, 2, 3]});
它将把参数
a
b
c
分别绑定到
1
2
3
。您的示例只是这种情况的退化,其中包含变量的数组是空的


在解构参数列表中,表达式在普通对象或数组文本中的位置必须包含变量名,因为变量名将绑定到参数对象/数组中的相应元素。这就是为什么第二个版本产生了一个错误:
“something”
不是一个变量名,它是一个字符串,所以不能在模式中使用。

啊,我明白了,这很酷。我现在查阅了javascript Destructuring(我从未听说过),如果其他人也感兴趣,我想离开这里。