javascript 函数定义中的对象

object in javascript function definition

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

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

另外,向对象中添加数据时,会抛出错误:

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

投掷:'Uncaught SyntaxError: Unexpected string'

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

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

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

您可以将其命名为:

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

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

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