如果你有一个HTML文件,在标题中链接了多个脚本,以后一个脚本可以从另一个脚本调用函数吗?假设它们包含在HTML页面中:
<script type="text/javascript" src="scripts/StyleSelector.js"></script>
答案 0 :(得分:3)
是的,一个文件中的脚本可以调用另一个文件中的函数,只要被调用的脚本全部已经完全加载。
答案 1 :(得分:2)
是
页面中的所有Javascript代码都在同一个全局上下文中执行。
答案 2 :(得分:2)
是。页面有一个JavaScript环境,在该环境中有一个全局范围。如果在脚本文件的顶级声明函数,则将它们添加到该一个全局作用域,而不管它们来自哪个脚本文件。一个文件中的全局函数与另一个文件中的全局函数没有区别。当然,任何可以引用另一个函数的函数(例如,来自全局范围)都可以执行它。
当然,这是图书馆的运作方式。你从一个脚本文件(可能来自CDN,谷歌或微软)加载(说)jQuery,然后你从另一个脚本文件(你自己的)使用。
答案 3 :(得分:1)
是的,他们可以。它们都包含在同一个全球范围内。
答案 4 :(得分:1)
是的,他们共享相同的全局变量,这样做是在Javascript中执行模块的可接受方式之一
<script src="jquery.js"></script> <!-- Include the jQuery library.
Creates a global jQuery variable -->
<script src="mycode.js"></script> <!-- code uses the jQuery
via that global variable -->
请注意,由于全局变量是共享的,因此在编写自己的脚本时,您应该尽量只在必要时才使用全局变量,以避免意外命名冲突。
一种常见的模式是将代码包装在一个立即调用的函数中,以便将事物转换为局部变量而不是全局变量。
//instead of littering the global namespace
var myVar = /*...*/
function f1(){ /*...*/ }
function f2(){ /*...*/ }
//Put the related stuff in a namespaced module.
var myModule = (function(){
var myVar = /*...*/
function f1(){ /*...*/ }
function f2(){ /*...*/ }
return {
f1: f1,
f2: f2
};
}());
//myModule is now a global "namespace" object containing just your public
// stuff inside it.