我是 JavaScript 的新手,我正在按照教程试验全局作用域。
在本教程中我有 3 个文件:
1) index.htm:
<html>
<head></head>
<body>
<h1>HELLO WORLD !!!</h1>
<script src="app.js"></script>
<script src="utility.js"></script>
</body>
</html>
如您所见,我包含了 2 个 JavaScript 文件。
2) app.js:
var person = 'Torny'; // When I call the logPerson() function this line override the person variable value into the global stack
//console.log(person);
logPerson();
3) utility.js 其中定义了 logPerson() 函数,定义在 app.js 文件中:
var person = 'Steve';
function logPerson() {
console.log(person);
}
好的,所以我预计会有以下行为:
在 app.js 文件中设置字符串 'Tony' 作为 person 变量的值,调用 logPerson() 函数在 utility.js 文件中声明,然后在控制台中打印“Tony”。
问题是,当我尝试在 FireFox 中打开 index.htm 文件时,我进入了 FireBug 控制台,而不是“Tony”值,我得到了这个错误消息:
ReferenceError: logPerson is not defined
所以它似乎从 app.js 文件中看不到定义到 utility.js中的 logPerson() 函数strong> 文件并导入。
为什么?我错过了什么?怎么了?
最佳答案
在 javascript 中,文件的顺序很重要。您需要先加载定义您的功能的脚本,然后才能使用它。切换 2 <script>
标签
<body>
<h1>HELLO WORLD !!!</h1>
<script src="utility.js"></script>
<script src="app.js"></script>
</body>
</html>
关于javascript - 为什么我无法从另一个 .js 文件访问一个 .js 文件中定义的 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417892/