Область действия переменных - PullRequest
0 голосов
/ 05 октября 2010

У меня есть два файла javascript, включенные в заголовок моего сайта. Оба файла содержат почти одинаковые переменные.

Если у меня есть такой заголовок

  <head>
    <script src="http://127.0.0.1/js/file1.js" type="text/javascript"></script>
    <script src="http://127.0.0.1/js/file2.js" type="text/javascript"></script>
 </head>

Можно ли получить доступ к переменным, определенным в file1.js, из file2.js?

Это то, что я пытаюсь

    file1
    $(function() {
        var x = 1;
    });

file2
    $(function() {
      console.log(x); //This dosen`t work. Can`t access var
    });

Ответы [ 5 ]

2 голосов
/ 05 октября 2010

Невозможно, как ты это делаешь.Переменные должны существовать в глобальной области видимости, чтобы быть доступными между файлами.В вашем примере x определено в области действия анонимной функции.Если вы изменили его на

// file1 
var x;
$(function() { 
    x = 1; 
}); 

, вы можете получить доступ к x из второго файла.

0 голосов
/ 05 октября 2010

Единственный способ сделать это - дать каждому файлу "namespace" .

var File1 = {
    X: 2
};


var File2 = {
    X: 3
};

На всякий случай, если это не ясноЯ имею в виду, что содержимое каждого файла должно быть обернуто в именованный объект, который будет действовать как пространство имен.

0 голосов
/ 05 октября 2010

Да, у вас есть глобальный объект в DOM, в который оба файла записывают переменные.В основном, если file1 говорит:

foo = bar;

, тогда в file2 вы можете получить доступ к foo

Если вы явно хотите объявить глобальную переменную, вы можете использовать объект window, которыйглобальный объект на веб-странице:

window.foo = 'bar';

Подробнее о глобальных объектах: http://www.quirksmode.org/js/this.html

0 голосов
/ 05 октября 2010

Если вы считаете, что включение файлов javascript заменяет фактическое содержимое скрипта, тогда, конечно.Если переменная является глобальной, file2 будет иметь к ней доступ.

0 голосов
/ 05 октября 2010

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

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