Javascript重用一个函数

时间:2011-12-04 19:26:21

标签: javascript html function

如果你有一个HTML文件,在标题中链接了多个脚本,以后一个脚本可以从另一个脚本调用函数吗?假设它们包含在HTML页面中:

<script type="text/javascript" src="scripts/StyleSelector.js"></script>

5 个答案:

答案 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.