Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2012, 10:51
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

как выполнить функцию в контексте локальных переменных
имеем такой код
<script>
var $=6;
function f(){alert($)};
function my(){
var $=11;
f()//6
};
my();</script>


как заставить функцию f выводить 11?
что то у меня без eval не получается
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2012, 11:00
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

<script type="text/javascript">
	var $ = 6;
	function f() { alert($) };
	function my() {
		$ = 11;
		f()//6
	};
	my();
</script>


Использование локальных и глобальных переменных поможет разобраться
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2012, 11:04
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

Либо Определение функций с параметрами

какой вариант больше нравится и устраивает

<script type="text/javascript">
	var $ = 6;
	function f(v) { alert(v) };
	function my() {
		var $ = 11;
		f($);
	};
	my();
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2012, 11:14
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от mullih Посмотреть сообщение
Либо Определение функций с параметрами
Если в контексте не удастся то буду с параметрами возиться
с помощью eval получается жуткая конструкция
eval('('+f.toString()+')()')//11

Последний раз редактировалось vadim5june, 07.08.2012 в 12:16.
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2012, 11:18
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

я же первым ответом написал пример, дело в том что вы создаете в функции my() локальну переменную, а не меняете значение глобальной
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2012, 11:23
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

vadim5june,
можно писать без var и она заменит глобальную переменную
var $=6;
function f(){alert($)};
function my(){
$=11;
f()//11
};
my();
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2012, 11:24
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от mullih Посмотреть сообщение
я же первым ответом написал пример, дело в том что вы создаете в функции my() локальну переменную, а не меняете значение глобальной
Вариант с параметрами(который понятен и очевиден) по некоторым соображениям в принципе не устраивает-поэтому и задал вопрос.
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2012, 11:25
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Dim@ Посмотреть сообщение
vadim5june,
можно писать без var и она заменит глобальную переменную
Это будет уже не локальная а глобальная переменная
она будет выполнятся в контексте локальных переменных если будет объявлена внутри функции-и наверн без eval это невозможно

Последний раз редактировалось vadim5june, 07.08.2012 в 11:32.
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2012, 11:36
Аспирант
Отправить личное сообщение для mullih Посмотреть профиль Найти все сообщения от mullih
 
Регистрация: 05.08.2012
Сообщений: 77

а такой вариант?

<script type="text/javascript">
	var $ = 6;
	function my() {
		var $ = 11;
		var f = function () { alert($) }
		f();
	};
	my();
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2012, 11:41
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от mullih Посмотреть сообщение
а такой вариант?
если внутри объявим то выполнится как надо
с помощью eval я как раз это делаю
Это я простой пример привел-на самом деле функция очень большая и у нее много переменных которые надо выполнять в контексте локальных переменных в разных функциях
объявлять везде не получится-передавать параметрами большая морока
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти функцию обработчик? BraNikita Events/DOM/Window 1 11.10.2011 21:21
Как заставить функцию выкидывать не undefined Solovei95 Общие вопросы Javascript 5 04.06.2011 17:41
Как выполнить функцию с задержкой? AlexMak Events/DOM/Window 6 11.12.2008 11:53
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11
как выполнить движение объекта scuter Элементы интерфейса 5 08.06.2008 23:57