Javascript 这是一个有效的箭头函数吗?

Javascript 这是一个有效的箭头函数吗?,javascript,Javascript,这个问题来自一个在线测验,我被它弄糊涂了。我觉得这是第三个,但我没有定义 如果在外部范围中定义了c,则哪个选项是箭头函数的示例 a,b =>c; {a,b} => c; (a,b) =>c; //this one. a,b => {return c;} 这个问题主要是关于语法的。第三个选项确实是正确的选择,因为函数参数a和b必须用括号括起来(

这个问题来自一个在线测验,我被它弄糊涂了。我觉得这是第三个,但我没有定义

如果在外部范围中定义了c,则哪个选项是箭头函数的示例

                a,b =>c;
                {a,b} => c;
                (a,b) =>c;  //this one.
                a,b => {return c;}

这个问题主要是关于语法的。第三个选项确实是正确的选择,因为函数参数
a
b
必须用括号括起来

因为必须首先定义
c
,所以会得到
undefined

var c='foo';//在外部范围中定义c
变量f=(a,b)=>c;//定义箭头函数
var结果=f(1,2);//使用一些参数调用arrow函数

console.log(结果);//检查输出是否为“foo”,c的值只有第二个具有无效语法

第一个和最后一个也是有效的,并且使用逗号运算符,箭头函数是右边的操作数。如果
a
不是已定义的变量,则仍会出现运行时错误,但一旦定义了,它就有效:

让a;//定义
a、 b=>c;//有效的
a、 b=>{return c;}//有效

控制台日志(“ok”)是的,第三个。在浏览器中尝试这些示例时发生了什么?请注意,只有第二个示例的语法无效。第一个和最后一个是有效的,并使用逗号运算符,箭头函数是右边的操作数。捕捉得非常好。:)逗号运算符的使用似乎确实是一个有效的场景,但对于针对初级JavaScript开发人员的JavaScript测试来说,这也是一个相当奇特的场景。:)关于
c
,问题已经说明绑定是在外部范围中定义的。然而,
a的情况并非如此的确如果箭头函数只有一个参数,则在其周围加括号是可选的。如果箭头函数有两个或多个参数,或者根本没有参数,则需要使用括号。