Javascript повторное использование функции - PullRequest
0 голосов
/ 04 декабря 2011

Если у вас есть один HTML-файл, имеющий несколько сценариев, связанных в заголовке, может ли один сценарий позже вызывать функции из другого?Предполагая, что они включены в HTML-страницу следующим образом:

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

Ответы [ 5 ]

3 голосов
/ 04 декабря 2011

Да, сценарий в одном файле может вызывать функцию в другом, если все вызываемые сценарии полностью загружены.

2 голосов
/ 04 декабря 2011

Да.Существует одна среда JavaScript для страницы, и в этой среде есть одна глобальная область.Если функции объявляются на верхнем уровне файла сценария, они добавляются в одну глобальную область независимо от того, из какого файла сценария они получены.Не существует различия между глобальными функциями в одном файле и глобальными функциями в другом.И, конечно, любая функция, которая может получить ссылку на другую (например, из глобальной области), может выполнить ее.

Это, конечно, то, как работают библиотеки.Вы загружаете (скажем) jQuery из одного файла сценария (возможно, из CDN, Google или Microsoft), а затем используете из другого файла сценария (своего).

2 голосов
/ 04 декабря 2011

Да.

Весь код Javascript на странице выполняется в одном глобальном контексте.

1 голос
/ 04 декабря 2011

Да, они имеют одни и те же глобальные переменные, и это один из приемлемых способов создания модулей в 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.
1 голос
/ 04 декабря 2011

Да, они могут.Все они содержатся в одной глобальной области действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...