Javascript运行一次代码

Ham*_*amy 9 javascript

我只希望我的JavaScript运行一次,我无法控制javascript文件的执行次数.基本上我正在将一个小的JS片段写入CMS,而CMS实际上称它为5-10次.所以这样的解决方案:

function never_called_again(args) {
  // do some stuff
  never_called_again = function (new_args) {
   // do nothing
  }
}
never_called_again();
Run Code Online (Sandbox Code Playgroud)

似乎没有用,因为只要从顶部再次运行我的代码片段,就会重新声明该函数,并重新评估"做一些事情".也许我只是没有正确地做到这一点,我对JS不太好.我正在考虑在全局变量上使用类似try-catch的东西,比如

if (code_happened == undefined) {
    \\ run code
     code_happened = true;
}
Run Code Online (Sandbox Code Playgroud)

编辑:有一个一致的状态,例如,如果我设置一个变量,我可以看到我的代码片段再次运行.但是在我访问它之前必须声明它,我不知道怎么说'这个变量是否存在'

Poi*_*nty 22

试试这个:

var doneTheStuff;
function whatever() {
  if (!doneTheStuff) {
    doneTheStuff = true;
    // do the stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

冗余变量声明不会影响变量的值.一旦其中一个函数将变量设置为true,其他函数将不会执行任何操作.


Mik*_*uel 5

if (typeof code_happened === 'undefined') {
  window.code_happened = true;
  // Your code here.
}
Run Code Online (Sandbox Code Playgroud)

typeof检查让您绕过尚未声明全局的事实。您也可以这样做,if (!window.code_happened)因为未定义的属性不会禁止属性访问。