Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 闭包和箭头语法_Javascript_Closures_Arrow Functions - Fatal编程技术网

Javascript 闭包和箭头语法

Javascript 闭包和箭头语法,javascript,closures,arrow-functions,Javascript,Closures,Arrow Functions,所以我现在的理解显然是错误的是 return arg => arg*2 与 return (arg)=>{arg*2} 我一直认为箭头函数在语法上更整洁 但是这样使用闭包是行不通的 function addTwoDigits(firstDigit){ return (secondDigit)=>{firstDigit + secondDigit} } let closure = addTwoDigits(5); console.log(closure(5)) //

所以我现在的理解显然是错误的是

return arg => arg*2

return (arg)=>{arg*2}
我一直认为箭头函数在语法上更整洁

但是这样使用闭包是行不通的

function addTwoDigits(firstDigit){
    return (secondDigit)=>{firstDigit + secondDigit}
}
let closure = addTwoDigits(5);
console.log(closure(5)) // Undefined
但这很好

function addTwoDigitsV2(firstDigit){
    return secondDigit => firstDigit + secondDigit
}
let closure2 = addTwoDigitsV2(10);
console.log(closure2(10))// 20

使用{}时,必须设置return

return (arg)=>{return arg*2}

如果arrow函数的主体被包装在
{
..
}
中,则需要一个
return
语句

由于您的表达式是单个表达式,因此可以跳过
{
-
}
返回。但是如果您有
{
-
}
,则需要
return
语句


括号在这里不是问题。如果有多个参数,则需要它们。对于一个,它们是可选的。

箭头功能在这里的工作方式不同:-

(x)=> x*2 ; // dont have to return anything, x*2 will be returned
is not same as 
(x) =>{x*2}
//here you need to return something otherwise undefined will be returned

如果箭头后面有表达式,则箭头函数仅自动提供返回。如果箭头后面跟着一个大括号,它将被视为函数体周围的大括号,因此必须显式地编写
return
,即

arg => arg * 2
相当于:

(arg) => { return arg * 2; }
函数添加两位数(第一位数){
返回(第二位)=>{
返回第一位数+第二位数
}
}
let closure=add两位数(5);

console.log(closure(5))
谢谢你澄清了问题,非常感谢。感谢所有的答案,我会在时间限制结束后将此问题标记为已回答。感谢你的帮助。在这个问题中,closure一词有点像是转移视线,因为问题与闭包无关,但是这是一个语法问题,在这里我看不到正确的术语,所以我想我应该先介绍一下第一个例子是隐式返回的例子,箭头函数支持隐式返回。