Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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 - Fatal编程技术网

Javascript 返回的匿名函数是否应以分号结尾?

Javascript 返回的匿名函数是否应以分号结尾?,javascript,Javascript,MDN使用了我提供的第二个代码,运行良好,但最后抛出了一个错误。为什么他们用分号结束匿名函数?如果匿名函数不在函数表达式中,那么使用匿名函数可以吗?如果函数不是函数表达式,则不应以分号结尾 函数makeAdder(x){ 返回函数(y){ 返回x+y; } } var add5=makeAdder(5); var add10=makeAdder(10); console.log(add5(2));//7. console.log(add10(2));//12 它运行正常,但在最后抛出一个错误

MDN使用了我提供的第二个代码,运行良好,但最后抛出了一个错误。为什么他们用分号结束匿名函数?如果匿名函数不在函数表达式中,那么使用匿名函数可以吗?如果函数不是函数表达式,则不应以分号结尾

函数makeAdder(x){
返回函数(y){
返回x+y;
}
}
var add5=makeAdder(5);
var add10=makeAdder(10);
console.log(add5(2));//7.
console.log(add10(2));//12
它运行正常,但在最后抛出一个错误

听起来像是一个linting错误,而不是Javascript错误——记住区别很重要。林廷主要是一个风格指南,而不是一个逻辑指南

那里的函数是返回的,而不是声明的-这意味着它是一个函数表达式,而不是函数声明,因此
返回的
表达式的末尾应该有一个

匿名函数总是函数表达式;函数声明需要一个名称,例如:

function someFnName() {
}

怎么样
makeAdder=x=>y=>x+y
?;)“如果函数不是函数表达式,就不应该以分号结尾。”但是,是什么让你认为这不是函数表达式呢?相关的(甚至可能是重复的):@george当我看到一个箭头函数时,我可以识别它,但我不知道如何编写,我会在掌握了范围和closures@HeavensGate666为了比较一个更简单的例子,
2+2
也是一个表达式。它返回一个数字。您可以将其分配给变量
x=2+2
,您可以将其作为函数
函数f(){return 2+2;}
的结果,甚至可以将其自身放在一行
2+2if
for
、相关块和函数声明除外。如果您忽略分号,解释器将尝试为您插入所需的分号(请参阅),但这偶尔会导致错误,因此除非您确定,否则依赖分号是不好的。@CertainPerformance ok谢谢您的解释我将阅读有关ASI的文章
function someFnName() {
}