在 JavaScript 中建立一個只能執行一次的函數
在 JavaScript 中,有時需要將函數的執行限制為單一實例。雖然靜態變數可以在 C 等語言中實現這一點,但 JavaScript 透過閉包提供了更優雅的解決方案。
閉包是一種即使在其封閉範圍結束後仍保留其上下文的函數,允許建立以下函數:只能呼叫一次。透過將執行標誌封裝在閉包中,我們可以確保它保持持久性並且外部程式碼無法存取。
以下是使用閉包建立一次性可執行函數的範例:
<code class="javascript">var something = (function() { var executed = false; return function() { if (!executed) { executed = true; // do something } }; })(); something(); // "do something" happens something(); // nothing happens</code>
此函數可確保閉包中包含的程式碼僅執行一次,無論後續呼叫為何。
或者,如果您喜歡更封裝的方法,您可以使用如下所示的實用函數:
<code class="javascript">function once(fn, context) { var result; return function() { if (fn) { result = fn.apply(context || this, arguments); fn = null; context = null; } return result; }; }</code>
用法:
<code class="javascript">function something() { /* do something */ } var one_something = once(something); one_something(); // "do something" happens one_something(); // nothing happens</code>
此實用函數傳回一個快取第一次呼叫結果並停用後續執行的函數。
以上是如何在 JavaScript 中建立只執行一次的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!