以下代码:

a = function(b) {

    return alfa() + b;

    function alfa() {
        return 7;
    }
}

console.log(a(4));
console.log(a(5));

函数 alfa() 是否在每次调用 a() 时创建?

最佳答案

是的。

您使用的语法是糖:

a = function(b) {
    var alfa = function() {
            return 7;
    }
    return alfa() + b;
}

console.log(a(4));
console.log(a(5));

它使您在每次执行 alfa 时创建和分配 a 变得更加清晰。

你也可以用这个简单的改变来测试它:
a = function(b) {
    return alfa; // let's return the function
    function alfa() {
            return 7;
    }
}
console.log(a(4)==a(4)); // logs false

如果你想避免每次都创建 alfa,你可以这样做:
a = (function(){
  var alfa = function() {
     return 7;
  }
  return function(b) {
     return alfa() + b;
  }
})();

10-06 14:00