Можно ли использовать переменную в файле с именем first.js
внутри другого файла с именем second.js
?
first.js
содержит переменную с именем colorcodes
.
Можно ли использовать переменную в файле с именем first.js
внутри другого файла с именем second.js
?
first.js
содержит переменную с именем colorcodes
.
Как сказал Фермин, переменная в глобальной области должна быть доступна для всех скриптов, загруженных после ее объявления. Вы также можете использовать свойство 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>
Вы можете экспортировать переменную из первого файла, используя экспорт.
//first.js
const colorCode = {
black: "#000",
white: "#fff"
};
export { colorCode };
Затем импортируйте переменную во второй файл, используя import.
//second.js
import { colorCode } from './first.js'
Это должно работать - определить глобальную переменную в первом файле и получить доступ к ней из второго файла:
<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, возможно, другие)
Мне понравилось, что ответить выше сказал, но, хотя он не работал со мной
потому что я был declaring
этими переменными inside
JQuery $( document ).ready()
поэтому убедитесь, что вы указали свои переменные внутри тега
<script>
не где-то еще
Я наткнулся на amplify.js. Это очень просто использовать. Чтобы сохранить значение, позвоните ему "myValue", вы выполните:
amplify.store("myKey", "myValue")
И чтобы получить доступ к нему, вы делаете
amplify.store("myKey")
Если вы храните свои цветовые коды в глобальной переменной, вы должны иметь доступ к ней из файла javascript.
Я могу сделать это несколько иначе. Я не уверен, почему я использую этот синтаксис, давно скопировал его из какой-то книги. Но каждый из моих 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. Я понимаю, что это не дает никакой эффективности во время выполнения, потому что оба сценария должны загружаться, но это помогает мне поддерживать мой код.
Одним из лучших способов является использование окна. НАЧАЛЬНОЕ СОСТОЯНИЕ
<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>
Используя 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.