powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как локальные переменные сделать глобальными?
4 сообщений из 4, страница 1 из 1
Как локальные переменные сделать глобальными?
    #38827395
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как выполнить функцию так словно она выполняется в глобальном контексте? this понятно можно выставить как fn.call(window) но как быть с переменными, они же станут локальными?

Т.е. Нужно чтобы

fn = function(){
var a = 1
...
}

Выполнилось также как

var a = 1

Во втором случае a будет глобальной переменной, а в первом нет, она будет локальной и потеряется.

Зачем мне это нужно? Мы переводим одну существующую систему на AMD загрузчик, и соответственно нужно обернуть существующие файлы в функции. Но проблема в том что они не расчитаны на AMD и многие из них используют глобальные переменные и если их так просто обернуть то перестанут работать.
...
Рейтинг: 0 / 0
Как локальные переменные сделать глобальными?
    #38827437
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private,
ммм, убрать ключевое слово var у переменных в функции и вызывать через fn.call не вариант? Грубо конечно, но первое, что в голову приходит

Код: javascript
1.
2.
3.
function (){
a = 1
}


Код: javascript
1.
2.
3.
4.
5.
6.
> a = 4
< 4
> fn.call(window)
< undefined
> a
< 1
...
Рейтинг: 0 / 0
Как локальные переменные сделать глобальными?
    #38827571
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не могу менять исходники потому что их несколько сотен Точнее могу но только автоматически - например обернуть каждый из них в дефайн функцию.

Хотя, можно использовать парсер и преобразовать переменные автоматически, но это тоже потребует времени. Но похоже другого варианта всеравно не остается.
...
Рейтинг: 0 / 0
Как локальные переменные сделать глобальными?
    #38827573
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jQuery// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === strundefined ) {
window.jQuery = window.$ = jQuery;
}


Только так. Убрать var будет неоднозначность если візівается из функции где уже есть такое имя (будет браться не глобвльная а локальная из вызываемой функции). А лучше рефакторинг фф пользу отказа о глоюальных переменных раз уж у Вас АМД
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как локальные переменные сделать глобальными?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]