MDN 使用我提供的第二个代码,它运行良好但在最后抛出错误。为什么他们用分号结束匿名函数?如果匿名函数不在函数表达式中,是否可以使用匿名函数?如果函数不是函数表达式,则不应以分号结尾。
function makeAdder(x) {
return function(y) {
return x + y;
}
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
对比
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
最佳答案
it runs fine but throws an error at the end
听起来像是 linting 错误,而不是 Javascript 错误 - 请务必牢记其中的区别。 Linting 主要是一种风格指南,而不是逻辑指南。
在
return function(y) {
return x + y;
};
那里的函数正在返回,而不是声明 - 这意味着它是一个函数表达式,而不是函数声明,所以 return
表达式的末尾应该有一个;
。
匿名函数总是函数表达式;函数声明需要一个名称,例如:
function someFnName() {
}
关于javascript - 返回一个匿名函数应该以分号结尾吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55372356/