Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:访问外部.js文件中定义的变量_Javascript_Web - Fatal编程技术网

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>和 Load 事件,这些脚本是在浏览器解析脚本并对您可用时运行的。您可以使用此功能:

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:很高兴看到它有所帮助:)