Javascript 返回的匿名函数是否应以分号结尾?
MDN使用了我提供的第二个代码,运行良好,但最后抛出了一个错误。为什么他们用分号结束匿名函数?如果匿名函数不在函数表达式中,那么使用匿名函数可以吗?如果函数不是函数表达式,则不应以分号结尾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 它运行正常,但在最后抛出一个错误
函数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+2它的行为将与函数表达式的行为完全相同-到达时仍会对其求值,它生成一个值,然后处理该值。或者,如果您没有捕获或以某种方式使用该值,则将其丢弃。因此,返回的所有内容都应以分号结尾?如果函数表达式在变量中存储,它怎么会是一个函数表达式?@HeavensGate666“因此返回的所有内容都应该以分号结尾?”这不一定是因为在JavaScript中。在这种情况下,省略分号不是问题。@HeavensGate666解释器希望在每个独立语句或表达式的末尾都有一个分号,但if
、for
、相关块和函数声明除外。如果您忽略分号,解释器将尝试为您插入所需的分号(请参阅),但这偶尔会导致错误,因此除非您确定,否则依赖分号是不好的。@CertainPerformance ok谢谢您的解释我将阅读有关ASI的文章
function someFnName() {
}