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

Hea*_*666 2 javascript

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 6

它运行正常,但最后抛出错误

听起来像是掉毛错误,而不是Javascript错误-记住这一点很重要。Linting主要是样式指南,而不是逻辑指南。

return function(y) {
  return x + y;
};
Run Code Online (Sandbox Code Playgroud)

返回的函数没有声明,这意味着它是一个函数表达式,而不是函数声明,因此return表达式的末尾应有一个;

匿名函数始终是函数表达式。函数声明需要一个名称,例如:

function someFnName() {
}
Run Code Online (Sandbox Code Playgroud)