Нужна помощь
08 ноября 2016 19:18
08 ноября 2016 19:25
08 ноября 2016 19:29
08 ноября 2016 19:47
require("AmAve_2100");
var ch_tex = 0
exports.change_textures = function () {
if (!ch_tex){
ch_tex = 1
}
else {ch_tex = 0}
var TEX_NIGHT_DIR = "tex_night/";
var TEX_DAY_DIR = "tex_day/";
console.log(m_amave.APP);
console.log(ch_tex)
return ch_tex
Подскажите, если я во входные парламенты функции вставляю ch_tex, то у меня при вызове функции значения не меняются, а значит туда передается значение, назначенное при определении переменной. А как это может быть, если у меня эта функция вызывается из другого файла? Или при вызове через exports читается все, что написано до определения функции - все переменные, пути и т.д. и подхватывается значение ch_tex = 0????
Алексей
08 ноября 2016 19:49
08 ноября 2016 23:17
09 ноября 2016 10:42
это речь идет о module.exports? несколько такого рода переменных в одном модуле можно применять, например:не, немного не то
module.exports = 123
module.exports = 456
module.exports = 789
??
И если я делаю var odin_dva_tri = require(./file), то будет ли конфликт между ними?
я о том, что если в том же примере использовать объект, то обе переменные будут ссылаться на него:
var APP_ASSETS_PATH = exports.APP_ASSETS_PATH = { test: 0 };
APP_ASSETS_PATH.test = 1;
console.log(APP_ASSETS_PATH.test, exports.APP_ASSETS_PATH.test); // выдаст 1 1
А module.exports так не надо использовать - это объект, содержащий объявления, доступные извне. Его нужно применять только внутри своего же модуля, чтобы вывести наружу методы или переменные. Если потом будете загружать этот модуль через require, то вернется как раз его объект exports.
Например:
b4w.register("module1", function(exports, require) {
exports.odin = 3;
exports.dva = 2;
exports.tri = 1;
});
b4w.register("module2", function(exports, require) {
var m1 = require("module1");
console.log(m1); // выдаст: Object {odin: 3, dva: 2, tri: 1}
});
09 ноября 2016 11:00
Подскажите, если я во входные парламенты функции вставляю ch_tex, то у меня при вызове функции значения не меняются, а значит туда передается значение, назначенное при определении переменной. А как это может быть, если у меня эта функция вызывается из другого файла? Или при вызове через exports читается все, что написано до определения функции - все переменные, пути и т.д. и подхватывается значение ch_tex = 0????exports тут не при чем, так работает javascript. Переменная ch_tex у вас обявлена в т.н. "глобальной области видимости", т.е. будет видна внутри там же функции. Если объявить переменную с тем же именем в самой функции или передать параметр с таким же именем, то он как бы перезатрет глоб. переменную.
Если кратко, области видимости бывают вложенные, т.е:
(глобальная обл. ( обл. функции ) )
При использовании переменной, она сначала ищется в текущей области, если объявление не находится, то ищем выше и т.д., поэтому глобальная переменная ch_tex в вашем примере становится видна.
09 ноября 2016 11:09
Вообще, функция после исполнения где переменные хранит? Как переменную можно раскопать в консоли и посмотреть к какой функции она относится?это уже сложнее, если просто нужно посмотреть значение переменной, то можно либо через console.log() её вывести, либо навесить на глоб. объект window, например:
var test = 0;
...
window.test = test;
тогда сможете в консоли просто набирать window.test и увидите значение
09 ноября 2016 11:12