内部闭包函数语句未执行

Inside closure function statement not executing

本文关键字:执行 语句 函数 闭包 内部      更新时间:2023-09-26

我有一个关于闭包函数的小问题。我有下面的关闭功能:

var add = (function() {
  var counter = 0;
  console.log('Executed');
  return function() {
    return counter += 1;
  };
})();
add();

它是一个自调用函数,所以第一次执行每个语句时,但当我在除了return语句之外没有执行的闭包语句内部调用add()方法时。

运行代码段后查看日志。

console.log('Before first execution.');
var add = (function() {
  console.log('Inside First time execution');
  var counter = 0;
  console.log('Executed');
  console.log('Returning a Funciton.');
  // Inner Function.
  return function() {
    console.log('Inner function called.')
    return counter += 1;
  }
})();
console.log('End of first execution');
console.log('Start of second execution');
add();
console.log('End of second execution');

add()是一个自调用函数,它可以立即得到。现在,在调用时,会返回一个函数。现在的诀窍是,这个新返回的函数(比方说inner函数)被分配回变量add。所以现在这个add变成了指向/引用这个inner函数。

因此,在第二次执行中,当您调用add()时,它一直指向被调用的内部函数。