JavaScript:访问外部.js文件中定义的变量
可能重复:JavaScript:访问外部.js文件中定义的变量,javascript,web,Javascript,Web,可能重复: 有没有办法访问来自外部导入的JavaScript.js文件的变量 在external.js文件中,我定义了一个varialbe,如下所示: // JavaScript Document var PETNAME = "Beauty"; 动态导入该代码后,我希望访问PETNAME变量,但没有得到定义的值: alert("Pet Name: " + PETNAME); 有什么不对劲吗?有没有办法将外部.js代码中的值引入主JavaScript 谢谢。在尝试访问外部文件中定义的变量之前
有没有办法访问来自外部导入的JavaScript.js文件的变量 在external.js文件中,我定义了一个varialbe,如下所示:
// JavaScript Document
var PETNAME = "Beauty";
动态导入该代码后,我希望访问PETNAME变量,但没有得到定义的值:
alert("Pet Name: " + PETNAME);
有什么不对劲吗?有没有办法将外部.js代码中的值引入主JavaScript
谢谢。在尝试访问外部文件中定义的变量之前,请确保包含该文件。还要确保外部文件中的变量未在函数内定义,在这种情况下,它们的范围仅限于该函数。如果这没有帮助,请尝试删除变量之前的关键字
var
,这将创建全局变量 > P>动态导入JS,您需要考虑<代码> OnRead StyeTechange < /C>和function getScript(url, callback) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.onreadystatechange = callback;
script.onload = callback;
document.getElementsByTagName('head')[0].appendChild(script);
}
您可以这样使用它:
getScript('path to your js file', function(){
alert("Pet Name: " + PETNAME);
});
+非常感谢你的回答。删除
var
对我来说是件新鲜事。此外,我应该提到,我正在动态导入.js代码。我不知道,这是至关重要的答案。谢谢。删除var关键字是非常糟糕的做法,它会创建全局变量并污染全局环境。@Sarfraz,还有其他方法可以确保变量是全局的吗?换句话说,除了删除var
?@Bunkai.Satori之外,还有什么更好的替代方法吗?可以使用自调用匿名函数或单例/模块模式:但它在您的情况下不起作用,因为您直接导入了js文件。+1-谢谢您的回答。您正确地找到了问题的根源,即我动态导入了.js文件。我将使用提出的建议。由于您的答案很清楚,不需要进一步补充,我想将其标记为我的问题的公认答案。@Bunkai.Satori:很高兴看到它有所帮助:)