我只希望我的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,其他函数将不会执行任何操作.
if (typeof code_happened === 'undefined') {
window.code_happened = true;
// Your code here.
}
Run Code Online (Sandbox Code Playgroud)
该typeof检查让您绕过尚未声明全局的事实。您也可以这样做,if (!window.code_happened)因为未定义的属性不会禁止属性访问。
| 归档时间: |
|
| 查看次数: |
28799 次 |
| 最近记录: |