我的朋友只是制作一些无意义的代码,或者至少我认为他是,但令我惊讶的是它没有抛出任何错误。然而,他并没有按照他的预期行事,因为他并不真正知道他在做什么。 但现在我很好奇它做了什么,因为必须有一些原因它不会引发错误。 代码看起来像这样:
var n = function(someArg, anotherArg, {help: []}){};
此外,在向对象添加数据时,会引发错误:
var n = function(someArg, anotherArg, {help: ["something"]}){};
抛出:'未捕获的SyntaxError:意外的字符串'
那为什么允许随机参数呢?
答案 0 :(得分:3)
这是EcmaScript 6 argument destructuring。如果将函数定义为:
function myfun({help: [a, b, c]}) {}
然后您可以将其称为:
myFun({help: [1, 2, 3]});
它会将参数a
,b
和c
分别绑定到1
,2
和3
。你的例子只是一个简并的例子,其中包含变量的数组是空的。
在解构参数列表中,表达式可以放在普通对象或数组文字中的位置必须包含变量名称,因为这是将绑定到参数对象/数组中相应元素的变量。这就是第二个版本产生错误的原因:"something"
不是变量名,它是一个字符串,因此不能在模式中使用。