gpt4 book ai didi

javascript - 为什么单独的 jQuery 文件在由同一文档加载时不能一起工作?

转载 作者:行者123 更新时间:2023-12-01 06:43:09 25 4
gpt4 key购买 nike

可以使用以下三个文件复制我的问题的示例...

index.htm:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="script1.js"></script>
<script type="text/javascript" src="script2.js"></script>
</head>
<body>
Hello, world!
</body>
</html>

script1.js:

$(function() {
const THE_TEXT = 'This is THE_TEXT';
});

script2.js:

$(function() {
function log_THE_TEXT() {
console.log(THE_TEXT);
}

log_THE_TEXT();
});

我希望在加载页面后在控制台日志中看到“This is THE_TEXT”。相反,出现了这个错误:

ReferenceError:THE_TEXT 未定义 script2.js:6:3

和:

jQuery.Deferred 异常:THE_TEXT 未定义 log_THE_TEXT@ http://example.com/js-test/script2.js:6:3

如果我在 script2.js 中定义常量,它会按预期工作。那么为什么它不起作用,有没有办法做到这一点?

最佳答案

这是因为

A function serves as a closure in JavaScript, and thus creates a scope, so that (for example) a variable defined exclusively within the function cannot be accessed from outside the function or within other functions

了解更多关于scope here的信息.

解决此问题的一种方法是使用 window 全局对象:

script1.js

$(function() {
window.THE_TEXT = 'This is THE_TEXT';
});

script2.js

$(function() {
function log_THE_TEXT() {
console.log(window.THE_TEXT);
}

log_THE_TEXT();
});

...但是using global variables is considered as a bad practice 。还有很多其他方法,但它们都会增加复杂性,而且这实际上取决于您长期想要实现的目标。

关于javascript - 为什么单独的 jQuery 文件在由同一文档加载时不能一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60132403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com