Могу ли я получить доступ к переменным из другого файла?

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

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

Ответ 1

Как сказал Фермин, переменная в глобальной области должна быть доступна для всех скриптов, загруженных после ее объявления. Вы также можете использовать свойство 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> 

Ответ 2

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

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

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

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

экспорт - MDN

Ответ 3

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

<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);

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

Ответ 4

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

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

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

Ответ 5

Я наткнулся на amplify.js. Это очень просто использовать. Чтобы сохранить значение, позвоните ему "myValue", вы выполните:

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

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

amplify.store("myKey")

Ответ 6

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

Ответ 7

Я могу сделать это несколько иначе. Я не уверен, почему я использую этот синтаксис, давно скопировал его из какой-то книги. Но каждый из моих 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();
    })

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

Ответ 8

Одним из лучших способов является использование окна. НАЧАЛЬНОЕ СОСТОЯНИЕ

<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>

Ответ 9

Используя 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.