js-challenges
js-challenges copied to clipboard
实现 执行一次的函数
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();
闭包应用
function one(callback){
let flag = true;
return function(...args){
if(!flag) return;
flag = false;
return callback(...args);
}
}
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'); // 不会有任何输出
function once(fn) { let flag = false; return (...args) => { if (!flag) { flag = true; fn.apply(this, args); } }; }