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
答案 0 :(得分:6)
运行正常,但最后抛出错误
听起来像 linting错误,而不是Javascript错误-记住这一点很重要。 Linting主要是样式指南,而不是逻辑指南。
在
return function(y) {
return x + y;
};
这里的函数是返回的,没有声明-这意味着它是一个函数表达式,而不是函数声明,因此return
表达式的末尾应有一个{{1 }}。
匿名函数总是 函数表达式;函数声明需要一个名称,例如:
;