Переменная, объявленная в одном скрипте, не определена в другом

#javascript

#javascript

Вопрос:

В моем html у меня есть следующее:

 <script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/photos.js"></script>
<script type="text/javascript" src="js/mattes.js"></script>
  

В common.js У меня есть:

 var mattes_openings_xml;
  

В mattes.js У меня есть:

 mattes_openings_xml = "<Openings><opening><item><x>7.75</x><y>1.75</y><width>4.5</width><height>6.5</height><type>rectangle</type><clipX>0</clipX><clipY>0</clipY><imgsrc></imgsrc></item></opening><opening><item><x>14</x><y>2.25</y><width>3.5</width><height>5.5</height><type>rectangle</type><clipX>0</clipX><clipY>0</clipY><imgsrc></imgsrc></item></opening><opening><item><x>2.5</x><y>2.25</y><width>3.5</width><height>5.5</height><type>rectangle</type><clipX>0</clipX><clipY>0</clipY><imgsrc></imgsrc></item></opening></Openings>"; 
  

На фотографиях.js У меня есть:

 console.log(mattes_openings_xml);
  

который выводится как неопределенный.

Я не понимаю, почему это происходит, потому что функция (в mattes.js ), который определяет mattes_openings_xml, вызывается перед функцией, которая его выводит (photos.js ).

Ответ №1:

Вы загружаете photos.js до того, как mattes.js , итак, фотографии.js происходит первым. Это только после фотографий.js запускает, что вы определяете mattes_openings_xml .

Комментарии:

1. Как я могу обойти это? Я должен загрузить photos.js до того, как mattes.js

2. Ну и фотографии. js зависит от этого mattes_openings_xml, поэтому логически это должно быть определено в первую очередь. Я не знаю точно, как структурировано приложение, но подумайте о том, чтобы определить его раньше, либо в photos.js или в другом js-файле.

Ответ №2:

Я решил это, вызвав:

 function mattes_get_xml()
{
  return mattes_openings_xml;
}