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