全局变量在从另一个js文件访问时失去它的值

Javascript: Global variable loses its value when accessed from another js file

本文关键字:失去 访问 文件 另一个 js 全局变量      更新时间:2023-09-26

我正在使用nodejssocket.io制作应用程序(游戏)。

我有几个javascript文件,三个要考虑这里:userDetails.js, board.jsmodal.html

现在让userDetails.js文件声明一个变量:var myUserName。由于它是全局的,我希望它也可以从其他文件访问。

我的board.html文件加载board.js文件。board.js文件的子代码是:

window.onload = init;
function init() {
    setUserName();
    . . . 
}
function setUserName(){
    var myUrl = window.location.href;
    myUserName = myUrl.slice(muUrl.indexOf("?")+1,myUrl.indexOf("!"));
    //here myUserName gets some value like "John"
}

我的modal.html的子代码是:

<script type="text/javascript" src="Scripts/userDetails.js"></script>
<script>
. . . 
document.getElementById("username").innerHTML = MyUserName;
//myUserName loses its value here. Its undefined.
showNow();
</script>

showNow()函数显示模态。

问题:当显示模式时,用户名id的值显示为"undefined"。myUserName有一些值,那么为什么它在modal.html文件中被视为"未定义"

这是未定义的,因为您在声明它为var myUserName时使用大写字母MyUsername来调用它

我想你可能忘记在userDetails add的末尾导出myUserName

module.exports = myUserName;

,并在需要的地方添加

var myUserName = require("yourPath/userDetails.js");