Javascript 中跨多个文件的全局变量

2022-08-30 03:25:53

我的一堆JavaScript代码位于一个名为helers.js的外部文件中。在调用此JavaScript代码的HTML中,我发现自己需要知道是否调用了来自帮助者.js的某个函数。

我试图通过定义以下内容来创建一个全局变量:

var myFunctionTag = true;

在我的 HTML 代码和帮助程序的全局范围内.js。

以下是我的html代码的样子:

<html>
...
<script type='text/javascript' src='js/helpers.js'></script>    
...
<script>
  var myFunctionTag = false;
  ...
  //I try to use myFunctionTag here but it is always false, even though it has been se t to 'true' in helpers.js
</script>

我试图做的事情是否可行?


答案 1

您需要先声明变量,然后才能包含帮助程序.js文件。只需在包含帮助者上方创建一个脚本标记.js并在那里定义它。

<script type='text/javascript' > 
  var myFunctionTag = false; 
</script>
<script type='text/javascript' src='js/helpers.js'></script>     
... 
<script type='text/javascript' > 
  // rest of your code, which may depend on helpers.js
</script>

答案 2

该变量可以在文件中声明,也可以在 HTML 文件中简单地引用。我的版本 :.jshelpers.js

var myFunctionWasCalled = false;

function doFoo()
{
    if (!myFunctionWasCalled) {
        alert("doFoo called for the very first time!");
        myFunctionWasCalled = true;
    }
    else {
        alert("doFoo called again");
    }
}

以及一个用于测试它的页面:

<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="helpers.js"></script>
</head>

<body>


<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

<script type="text/javascript">doFoo();</script>

<p>Some stuff in between</p>

<script type="text/javascript">doFoo();</script>

<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

</body>
</html>

您将看到测试将显示两个不同的内容,并且第二次写入页面的值将不同。alert()