Могу ли я получить доступ к переменным из другого файла? - PullRequest
140 голосов
/ 14 июля 2010

Можно ли использовать переменную в файле с именем first.js внутри другого файла с именем second.js?

first.js содержит переменную с именем colorcodes.

Ответы [ 9 ]

156 голосов
/ 14 июля 2010

Как сказал Фермин, переменная в глобальной области видимости должна быть доступна для всех сценариев, загруженных после ее объявления. Вы также можете использовать свойство window или (в глобальной области видимости) this, чтобы получить тот же эффект.

// first.js
var colorCodes = {

  back  : "#fff",
  front : "#888",
  side  : "#369"

};

... в другом файле ...

// second.js
alert (colorCodes.back); // alerts `#fff`

... в вашем HTML-файле ...

<script type="text/javascript" src="first.js"></script> 
<script type="text/javascript" src="second.js"></script> 
19 голосов
/ 16 июля 2018

Вы можете экспортировать переменную из первого файла, используя export .

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
export { colorCode };

Затем импортируйте переменную во второй файл, используя import .

//second.js
import { colorCode } from './first.js'

экспорт - MDN

13 голосов
/ 14 июля 2010

Это должно сработать - определите глобальную переменную в первом файле и получите доступ к ней из второго файла:

<script src="/firstfile.js"></script>
<script src="/secondfile.js"></script>

firstfile.js:

var colors = {
   text:'#000000',
   background:'#aaaaaa',
   something_else:'blue'
};

secondfile.js:

do_something_with(colors.background);

Обратите внимание, что порядок загрузки файлов сценариев имеет значение для некоторых браузеров (IE6 наверняка, а может и для других)

10 голосов
/ 17 августа 2016

Мне понравилось то, что ответил выше , но со мной это не сработало

потому что я declaring эти переменные inside JQuery $( document ).ready()

, поэтому убедитесь, что вы объявили свои переменные внутри тега <script>, а не где-то еще

4 голосов
/ 02 августа 2015

Я сталкивался с ampify.js . Это действительно просто в использовании. Чтобы сохранить значение, назовем его «myValue», вы делаете:

amplify.store("myKey", "myValue")

И чтобы получить к нему доступ, вы делаете

amplify.store("myKey")
2 голосов
/ 24 ноября 2016

Возможно, я делаю это немного по-другому.Я не уверен, почему я использую этот синтаксис, скопировал его из какой-то книги давным-давно.Но каждый из моих js-файлов определяет переменную.Первый файл, без всякой причины, называется R:

    var R = 
    { 
        somevar: 0,
        othervar: -1,

        init: function() {
          ...
        } // end init function

        somefunction: function(somearg) {
          ...
        }  // end somefunction

        ...

    }; // end variable R definition


    $( window ).load(function() {
       R.init();
    })

И затем, если у меня есть большой кусок кода, который я хочу выделить, я помещаю его в отдельный файл и другую переменнуюимя, но я все еще могу ссылаться на переменные и функции R.Я назвал новый TD безо всякой на то причины:

    var TD = 
    { 
        xvar: 0,
        yvar: -1,

        init: function() {
           ...
        } // end init function

        sepfunction: function() {
           ...
           R.somefunction(xvar);
           ...
        }  // end somefunction

        ...

    }; // end variable TD definition


    $( window ).load(function() {
       TD.init();
    })

Вы можете видеть, что в «seffunction» TD я называю функцию R.somefunction.Я понимаю, что это не дает никакой эффективности во время выполнения, потому что нужно загружать оба сценария, но это помогает мне сохранять мой код организованным.

2 голосов
/ 14 июля 2010

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

0 голосов
/ 02 мая 2019

Используя Node.js, вы можете экспортировать переменную через модуль.

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
module.exports = { colorCode };

Затем импортируйте модуль / переменную во второй файл, используя require.

//second.js
const { colorCode } = require('./first.js')

Вы можете использовать import и export подход от ES6, используя Webpack / Babel, но в Node.js вам нужно включить флаг и использует расширение .mjs.

0 голосов
/ 21 февраля 2019

Один из лучших способов - использовать окно. INITIAL_STATE

<script src="/firstfile.js">
    // first.js
    window.__INITIAL_STATE__ = {
      back  : "#fff",
      front : "#888",
      side  : "#369"
    };
</script>
<script src="/secondfile.js">
    //second.js
    console.log(window.__INITIAL_STATE__)
    alert (window.__INITIAL_STATE__);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...