Em nosso desenvolvimento diário, geralmente encontramos uma situação em que queremos fazer uma função executada apenas uma vez, especialmente quando alguns loops ou execução cronometrada.
Sem mais delongas, basta fazer o upload do código:
function runOnce (fn, context) {// Controle a função para acionar a função return () {try {fn.apply (context || this, argumentos); } catch (e) {console.error (e); // geralmente você pode comentar esta linha} finalmente {fn = null; }}} // Uso 1: var a = 0; var canonlyfireonce = runOnce (function () {a ++; console.log (a);}); canonlyfireonce (); // 1CanonLyFireonce (); // nada canonlyfireonce (); // nada // uso 2: var name = "zhang san"; var canonlyfireonce = runOnce (function () {console.log ("hello" + this.name);}); canonlyfireonce (); // Olá Zhang San CanonlyFireonce (); // nada // Uso 3: var obj = {nome: "Os gansos solitários do mundo", idade: 24}; var canonlyfireonce = runOnce (function () {console.log ("hello" + this.name);}, obj); canonlyfireoCe (); // Olá, Tianya, CanonlyFireonce (); // nadaPorque depois que a função de retorno é executada uma vez, fn = nulo a define não nula, para que não seja executada posteriormente. Publicar outro código compartilhado por outras pessoas on -line, o princípio é o mesmo:
função uma vez (fn, context) {var resultado; retornar function () {if (fn) {resultado = fn.apply (context || this, argumentos); fn = nulo; } resultado de retorno; };} // uSagevar CanonLyFireonce = ONE (FUNCTION () {console.log ('disparado!');}); canonlyfireonce (); // "Despedido!" canonlyfireonce (); // nadaO exposto acima é uma coleção dos exemplos de função para que você permita que o JavaScript seja executado apenas uma vez. Se você precisar, você pode consultar.