javascript函数定义中的对象

时间:2017-04-24 21:13:16

标签: javascript function object parameters definition

我的朋友只是制作一些无意义的代码,或者至少我认为他是,但令我惊讶的是它没有抛出任何错误。然而,他并没有按照他的预期行事,因为他并不真正知道他在做什么。 但现在我很好奇它做了什么,因为必须有一些原因它不会引发错误。 代码看起来像这样:

var n = function(someArg, anotherArg, {help: []}){};

此外,在向对象添加数据时,会引发错误:

var n = function(someArg, anotherArg, {help: ["something"]}){};

抛出:'未捕获的SyntaxError:意外的字符串'

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

1 个答案:

答案 0 :(得分:3)

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

function myfun({help: [a, b, c]}) {}

然后您可以将其称为:

myFun({help: [1, 2, 3]});

它会将参数abc分别绑定到123。你的例子只是一个简并的例子,其中包含变量的数组是空的。

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