javascript - 返回一个匿名函数应该以分号结尾吗?

标签 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

对比

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/

相关文章:

javascript - HTML 选择下拉菜单,最大高度为 100%,大小自动?

javascript - 无法初始化行重新排序插件 - rowReordering 不是函数

javascript - 类型错误 : cannot read property 'rows' of null when deleting a row using javascript

javascript - Quintus V0.2.0 - 加载 .tmx 文件时出错

javascript - 在 window.opener 中创建一个在子窗口关闭时持续存在的对象

javascript - 在jquery数据表服务器端分页中指定页面大小

javascript - 如何在 jQuery Accordions 中实现即时搜索

asp.net - 加载子页面时禁用父页面

javascript - 更有效的数字比较

javascript - jQuery Slider Bar - 尝试根据用户输入设置范围和间隔