如何在有限的函数内执行这个结果

How to execute this result within a limited function

问题如下:
第一次调用 add 时,它将 return 1;
第二次调用时,它 returns 2;
只能写在函数中

var add = function () {
     // start only 
    
     // end 
};
 
console.log(add()); // 1
console.log(add()); // 2

目前的想法是需要一个全局变量
所以现在的写法
但是这种写法不符合要求

var add = (function () {
 let counter=0
   return function () {
  counter += 1; return counter;}
}();

我不知道如何调整代码来解决这个问题谢谢

是这样的吗?

var add = {
    time: 0,
    call: () => {
        add.time++;
        console.log(add.time);
    }
};

add.call(); // 1
add.call(); // 2

我会这样做。它隐含地创建了一个全局变量,它很脏,但它满足(奇怪的)要求。

var add = function () {
     if(typeof a === "undefined") a = 0;
     return ++a;
};
 
console.log(add()); // 1
console.log(add()); // 2

您可以在 window 对象中创建一个参数。但我更喜欢纳克西人的回答。

var add = function () {
  if (window.added === undefined) window.added = 0;
  window.added += 1;
  return window.added;
};
 
console.log(add()); // 1
console.log(add()); // 2

想到的所有解决方案:

使用一个属性分配给函数

// in JS, a function is also an object; you can assign properties to it.
function add() {
  if (add.value === undefined) add.value = 0;
  return ++add.value;
}

console.log(add());
console.log(add());

创建本地作用域

var add = (function() {
  var value = 0;
  return function() {
    return ++value;
  };
})();

console.log(add());
console.log(add());

使用全局作用域

function add() {
  if (window._currentValue === undefined) window._currentValue = 0;
  return ++window._currentValue;
}

console.log(add());
console.log(add());

我认为您可能对第一个解决方案特别感兴趣。