gpt4 book ai didi

optimization - JavaScript - 在没有 bool 值的情况下运行一次

转载 作者:IT王子 更新时间:2023-10-29 03:19:37 29 4
gpt4 key购买 nike

有没有办法只运行一段 JavaScript 代码ONCE,而不使用 bool 标志变量来记住它是否已经运行过?

特别是不是像这样的东西:

var alreadyRan = false;
function runOnce() {
if (alreadyRan) {
return;
}
alreadyRan = true;

/* do stuff here */

}

我将有很多这样类型的函数并且保留所有 bool 值会很困惑...

最佳答案

另一种方法是在执行时覆盖函数,因此它只会执行一次。

function useThisFunctionOnce(){
// overwrite this function, so it will be executed only once
useThisFunctionOnce = Function("");
// real code below
alert("Hi!");
}

// displays "Hi!"
useThisFunctionOnce();
// does nothing
useThisFunctionOnce();

“有用”示例:

var preferences = {};
function read_preferences(){
// read preferences once
read_preferences = Function("");
// load preferences from storage and save it in 'preferences'
}
function readPreference(pref_name){
read_prefences();
return preferences.hasOwnProperty(pref_name) ? preferences[pref_name] : '';
}
if(readPreference('like_javascript') != 'yes'){
alert("What's wrong wth you?!");
}
alert(readPreference('is_stupid') ? "Stupid!" : ":)");

编辑:正如 CMS 所指出的,仅用 function(){} 覆盖旧函数将创建一个旧变量仍然存在的闭包。为解决该问题,function(){} 被替换为 Function("")。这将在全局范围内创建一个空函数,避免闭包。

关于optimization - JavaScript - 在没有 bool 值的情况下运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678628/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com