我想實現一個函數,將另一個函數作爲參數,並返回該函數的新版本,只能調用一次。函數作爲JavaScript中的函數的參數
對結果函數的後續調用應該沒有效果(並且應該返回undefined)。
例如:
logOnce = once(console.log)
logOnce("foo") // -> "foo"
logOnce("bar") // -> no effect
我想實現一個函數,將另一個函數作爲參數,並返回該函數的新版本,只能調用一次。函數作爲JavaScript中的函數的參數
對結果函數的後續調用應該沒有效果(並且應該返回undefined)。
例如:
logOnce = once(console.log)
logOnce("foo") // -> "foo"
logOnce("bar") // -> no effect
您可以obeject您傳遞作爲參數的函數中使用標誌
function once(func){
return function(){
if(!func.performed){
func.apply(this,arguments);
func.performed = true;
}
}
}
var logOnce = once(console.log);
logOnce("Test 1");
logOnce("Test 2");
感謝您的答案,但它應該只運行一次,第二次應該什麼都不做(或返回undefined)。 – Vishwa 2014-10-28 09:28:24
第二次它不記錄事實 – 2014-10-28 09:34:20
你有工作[小提琴](HTTP ://jsfiddle.net/)來說明你的問題?因爲現在,我們無法理解它... – sp00m 2014-10-28 08:52:34
你的問題是什麼? – Clive 2014-10-28 08:52:42
他想要一個只能運行一次的函數。 – 2014-10-28 08:53:41