如何在 JavaScript 中创建只能执行一次的函数
JavaScript 本质上并没有提供一种方法来创建只能执行一次的函数运行一次。然而,有一些使用闭包和第三方库的优雅解决方案。
闭包方法:
闭包创建一个私有作用域,可以由它包含的函数访问。在此范围内,可以设置一个标志来指示该函数是否已执行。以下代码演示了这种方法:
<code class="javascript">var something = (function() { var executed = false; return function() { if (!executed) { executed = true; // do something } }; })();</code>
第一次调用 Something() 会调用该函数并将执行设置为 true。后续调用将无效,因为执行仍然为 true。
第三方库方法:
像 Underscore 和 Ramda 这样的库提供了一个 Once() 函数,它包装了提供的函数并确保它只运行一次。
<code class="javascript">// Using Underscore var one_something = _.once(something); // Using Ramda const one_something = R.once(something);</code>
返回的函数可以调用多次,但底层函数只会运行第一次。
创建函数的实用程序-时间函数:
如果您不使用库,您可以创建自定义实用函数。一种方法是:
<code class="javascript">function once(fn, context) { var result; return function() { if (fn) { result = fn.apply(context || this, arguments); fn = null; } return result; }; }</code>
此函数接受一个函数和一个可选的上下文。它返回一个函数,该函数在第一次调用时执行原始函数并返回结果。后续调用没有任何效果。
以上是如何在 JavaScript 中构建一个只执行一次的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!