js-challenges icon indicating copy to clipboard operation
js-challenges copied to clipboard

实现 执行一次的函数

Open Sunny-117 opened this issue 2 years ago • 4 comments

Sunny-117 avatar Nov 03 '22 08:11 Sunny-117

function myF(fun) {
  let flag = false;
  return function () {
    if (!flag) {
      flag = true;
      return fun.call(this, ...arguments);
    }
  };
}
function sayHi() {
  console.log("hi!");
}
const sayOnce = myF(sayHi);
sayOnce();
sayOnce();

闭包应用

bearki99 avatar Feb 20 '23 13:02 bearki99

function one(callback){
    let flag = true;
    return function(...args){
        if(!flag) return;
        flag = false;
        return callback(...args);
    }
}

veneno-o avatar Mar 15 '23 16:03 veneno-o

function once(fn) {
  let called = false;

  return function() {
    if (!called) {
      called = true;
      fn.apply(this, arguments);
    }
  }
}

let runOnce = once(function(name) { 
  console.log(`Hello, ${name}!`); 
});

runOnce('Alice'); // 输出:Hello, Alice!
runOnce('Bob');   // 不会有任何输出

kangkang123269 avatar Sep 01 '23 03:09 kangkang123269

function once(fn) { let flag = false; return (...args) => { if (!flag) { flag = true; fn.apply(this, args); } }; }

huxuedong avatar Jan 17 '24 05:01 huxuedong