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]});
它将参数 a
、b
和 c
分别绑定到 1
、2
和 3
。你的例子只是一个退化的例子,其中包含变量的数组是空的。
在解构参数列表中,表达式在普通对象或数组字面量中的位置必须包含变量名,因为这是将绑定到参数中相应元素的变量object/array.这就是第二个版本产生错误的原因:"something"
不是变量名,它是一个字符串,因此不能在模式中使用。
我的朋友只是在编写一些无意义的代码,或者至少我认为他是,但令我惊讶的是它没有抛出任何错误。然而,它并没有按照他的预期进行,因为他并不真正知道自己在做什么。 但是现在我很好奇它做了什么,因为一定有某种原因它不会抛出错误。 代码看起来像这样:
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]});
它将参数 a
、b
和 c
分别绑定到 1
、2
和 3
。你的例子只是一个退化的例子,其中包含变量的数组是空的。
在解构参数列表中,表达式在普通对象或数组字面量中的位置必须包含变量名,因为这是将绑定到参数中相应元素的变量object/array.这就是第二个版本产生错误的原因:"something"
不是变量名,它是一个字符串,因此不能在模式中使用。