Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169

Область видимости

03.11.2019, 11:14. Показов 704. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть хтмл страница. В нее подключаются два js скрипта, условно назовем их file1 and file2.
В file1 есть обработчик нажатия кнопок. В file2 есть функция, которая вызывается при определенных условиях и определяет переменную(true/false) и на основании этой переменной в file1 в обработчике должно проверятся условие.
Как перебросить эту переменную в c file2 в file1.
file1 and file2 это порядок их подключения.
Пробовал через куки, работает, но мне не нравится.
Пробовал через объект window, я думал он глобальный и единый для всего браузера(надеюсь вы поняли что я имел ввиду), но походу он индивидуальный для каждого скрипта.
Подскажите, какие есть варианты?
спс
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2019, 11:14
Ответы с готовыми решениями:

Область видимости
Здравствуйте, помогите решить задачу, пожалуйста имеем такой код: for(var i in scrolling){ ...

Область видимости и замыкания
Добрый вечер, товарищи программисты! Подскажите пожалуйста, почему код var myFunc = function(){ var i = 10; return function(){...

область видимости переменной
добрый день! у меня есть три события mousedown, mousemove и mouseup. и я реализовываю drag&drop и есть три обработчика ...

8
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
03.11.2019, 13:28
Все загруженные js-файлы в браузере работают как один большой js-файл, так как js однопоточный. Поэтому можешь в одном файле определять переменные/функции, в другом файле их использовать.
0
88 / 66 / 24
Регистрация: 12.10.2019
Сообщений: 224
03.11.2019, 13:31
да, только нужно еще следить как объявлены у вас эти переменные в файлах file2 и file1

как глобальные или как локальные.
Если как локальные внутри одной функции файла file1, то другая функция в файле file2 их не увидет

объявляйте как глобальные, тогда увидет
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
03.11.2019, 14:11  [ТС]
делал так
file1
JavaScript
1
2
3
4
// за пределами функций
window.myProp = function(){ 
 return false;
};

file2
// внутри другой функции
JavaScript
1
2
3
4
5
if(some){
 window.myProp = function(){
     return true;
}
}
так вот когда происходит вызов в file1 всегда return false. Хотя если я вызову через консоль window.myProp(); то вернет true.
Не могу понять как эта хрень работает. И да до того как происходит вызов в file1, в file2 переопределение гарантированно произошло.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
03.11.2019, 14:15
egor2116,


http://some-test.onlinewebshop... ent-files/


index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Код</title>
</head>
<body>
    <script src="file1.js"></script>
    <script src="file2.js"></script>
</body>
</html>
file1.js
JavaScript
1
let someVar = 1;
file2.js
JavaScript
1
2
3
if (someVar == 1) {
    alert(someVar);
}
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
03.11.2019, 17:06
Здравствуйте.
egor2116, Mr_Sergo, в современном браузере уже надо делать так:
page.html
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script type="module" src="./file1.js"></script>
</head>
<body>
    <input type="button" id="press" value="Press">
    <input type="button" id="bool" value="true">
</body>
</html>
file1.js
JavaScript
1
2
3
4
5
6
7
8
9
10
import { someVar } from "./file2.js";
 
document.getElementById("press").onclick = press_click;
 
function press_click() {
    if (someVar)
        console.log("Yes!");
    else
        console.log("No!");
}
file2.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
export let someVar;
 
function bool_click() {
    someVar = !someVar;
    document.getElementById("bool").value = someVar;
}
 
(function main() {
    someVar = true;
    document.getElementById("bool").onclick = bool_click;
})();
Или необходимо поддерживать IE11 и телефоны пятилетней давности?
Тогда надо копаться в устаревших технологиях модулей.
2
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
03.11.2019, 19:35  [ТС]
Mr_Sergo, ты не понял вопроса. В твоем примере нужно что бы переменная someVar была переопределена в file2 и file1 это увидел.

Добавлено через 3 минуты
amr-now,
Правильно ли я понял!
Объявляем переменную и указываем что хотим ее экспортировать в file2. А в file1 говорим, что хотим импортировать переменную?

ПС Хочу напомнить, что file1, file2 такой порядок, загрузки.

Или необходимо поддерживать IE11 и телефоны пятилетней давности?
нет
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
03.11.2019, 19:40
Цитата Сообщение от egor2116 Посмотреть сообщение
Объявляем переменную и указываем что хотим ее экспортировать
Объявляем переменную и указываем что хотим ее экспортировать всем, кто захочет её импортировать.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
04.11.2019, 10:38
Цитата Сообщение от egor2116 Посмотреть сообщение
нужно что бы переменная someVar была переопределена в file2 и file1 это увидел
Кто тебе не дает ее переопределять?


http://some-test.onlinewebshop... t-files/2/


index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Код</title>
</head>
<body>
    <button id="btn">Переопределить</button>
    <script src="file1.js"></script>
    <script src="file2.js"></script>
</body>
</html>
file1.js
JavaScript
1
2
3
4
5
6
let someVar = 1;
 
btn.onclick = () => {
    someFun();
    console.log(someVar);  // 2
}
file2.js
JavaScript
1
2
3
function someFun() {
    someVar = 2;
}
Добавлено через 6 минут
При чем неважно в каком из файлов ты ее переопределяешь- результат доступен в обоих файлах

file1.js
JavaScript
1
2
3
4
5
6
let someVar = 1;
 
btn.onclick = () => {
    someVar = 2;
    someFun();
}
file2.js
JavaScript
1
2
3
function someFun() {
    console.log(someVar);  // 2
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2019, 10:38
Помогаю со студенческими работами здесь

Непонятная область видимости скриптов
Здравствуйте, никак не могу разобраться в встраивании скриптов в html-код. Почему если в скрипте не одна функция, то доступ из html-кода...

Область видимости. Не могу вызвать переменную вне цикла For, т.е. вывести в цикле могу, а вне цикла нет. Почему?
Привет, не могу вызвать переменную вне цикла for, тоесть вывести в цикле могу, а вне цикла нет почему? переменная a1 выводится как надо,...

Глобальная зона видимости
Задача по выдаче количества наиболее часто встречающейся буквы. В приведенном мною решении все показывает правильно, но если мы...

Область видимости
Здравствуйте есть один главный фал с функциями common.js, а к каждой странице подключается js файл, который нужен для неё. Например, для...

Область видимости
Есть код,полностью рабочий,но это-то мне и странно,ведь переменная i1 определена в функции p1(), а значит только в ней и должна быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru