Las preguntas son las siguientes:
La primera vez que llame al complemento, devolverá 1;
la segunda vez que llama, devuelve 2;
Solo se puede escribir en función
var add = function () { // start only // end }; console.log(add()); // 1 console.log(add()); // 2 La idea actual es que se necesita una variable global
Así que la forma actual de escribir
Pero esta forma de escribir no cumple con los requisitos
var add = (function () { let counter=0 return function () { counter += 1; return counter;} }();No sé cómo ajustar el código para resolver esta pregunta gracias
algo asi?
var add = { time: 0, call: () => { add.time++; console.log(add.time); } }; add.call(); // 1 add.call(); // 2Yo lo haría así. Implícitamente crea una variable global, que está muy sucia, pero cumple con los (extraños) requisitos.
var add = function () { if(typeof a === "undefined") a = 0; return ++a; }; console.log(add()); // 1 console.log(add()); // 2Todas las soluciones que se me ocurrieron:
Usar una propiedad asignada a la función
// 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());Crear un ámbito local
var add = (function() { var value = 0; return function() { return ++value; }; })(); console.log(add()); console.log(add());Usar el alcance global
function add() { if (window._currentValue === undefined) window._currentValue = 0; return ++window._currentValue; } console.log(add()); console.log(add());Creo que la primera solución puede ser de especial interés para usted.