игра брюс 2048
Главная / Программирование / Flash MX для профессиональных программистов / Тест 5

Flash MX для профессиональных программистов - тест 5

Упражнение 1:
Номер 1
Рассмотрите следующий код
        function gen(){
       var x = 0;
       return function(){
	trace(++x);
	}
   }
   f1 = gen();
   f2 = gen();
   f1();
   f2();
        и определите, что именно он выводит в консоль? (В приведенных ниже вариантах ответа мы будем писать [перевод строки] вместо настоящего перевода строки.)

Ответ:

 (1) undefined [перевод строки] undefined 

 (2) undefined [перевод строки] 1 

 (3) 1 [перевод строки] 1 

 (4) 1 [перевод строки] 2 


Номер 2
Рассмотрите следующий код
        function gen(){
        var x = 0;
        f1 = function(){
			trace(++x);
        }	
        f2 = function(){
			trace(++x);
        }	
        }	
        
        gen();
        f1();
        f2();
        и определите, что именно он выводит в консоль? (В приведенных ниже вариантах ответа мы будем писать [перевод строки] вместо настоящего перевода строки.)

Ответ:

 (1) undefined [перевод строки] undefined 

 (2) undefined [перевод строки] 1 

 (3) 1 [перевод строки] 1 

 (4) 1 [перевод строки] 2 


Упражнение 2:
Номер 1
Рассмотрите следующий код
        function iter_n(n, func){
return function(x){
		var result = x;
		for (var i=0; i<n; i++){
			result = func(result);
              }
	      return result;
        }
        }
        function func_inc(x){
        return ++x;
        }
        f = func_inc;
        y = iter_n(iter_n(2, f)(2), f)(2);
        
        trace(y);
        и определите, что именно он выводит в консоль?

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)

 (6) 16 


Номер 2
Рассмотрите следующий код
        function iter_n(n, func){
        	return function(x){
        		var result = x;
        		for (var i=0; i<n; i++){
        			result = func(result);
        		}
        		return result;
        	}
        }
        function func_twice(x){
        	return 2*x;
        }
        f = func_twice;
        z = iter_n(iter_n(2, f)(2), f)(2);
        trace(z);
        и определите, что именно он выводит в консоль?

Ответ:

 (1)

 (2)

 (3) 64 

 (4) 256 

 (5) 512 

 (6) 1024 


Номер 3
Рассмотрите следующий код
        function iter_n(n, func){
        	return function(x){
        		var result = x;
        		for (var i=0; i<n; i++){
        			result = func(result);
        		}
        		return result;
        	}
        }
        function func_multiply_ten(x){
        	return 10*x;
        }
        f = func_multiply_ten;
        t = iter_n(iter_n(2, f)(2), f)(2);
        trace(t);
        и определите, что именно он выводит в консоль?

Ответ:

 (1) 20 

 (2) 100 

 (3) 200 

 (4) 2000 

 (5) 2*1010(печатается 2e+10) 

 (6) 2*10100(печатается 2e+100) 

 (7) 2*10200(печатается 2e+200) 


Упражнение 3:
Номер 1
Откуда доступны локальные переменные?

Ответ:

 (1) только из данной функции (где они определены) 

 (2) из данной функции и методов объекта, которому она принадлежит 

 (3) из данной функции и функций, вызванных из нее 

 (4) из данной функции и функций, созданных внутри нее 

 (5) из данной функции и всех функций того же клипа 


Номер 2
В какой момент становятся доступны (не локальные) функции, определенные способом function name()?

Ответ:

 (1) в начале кадра 

 (2) после определения 

 (3) только в следующем кадре 


Номер 3
Доступны ли локальные переменные некоторой функции после выхода из нее?

Ответ:

 (1) да, как и любые другие переменные 

 (2) нет 

 (3) доступны только через функцию, определенную в данной 


Упражнение 4:
Номер 1
В какой момент становятся доступны (не локальные) функции, определенные способом name = function ()?

Ответ:

 (1) в начале кадра 

 (2) после определения 

 (3) только в следующем кадре 


Номер 2
В какой момент теряется последняя ссылка на контекст вызова функции (что приводит к его разрушению), если не предпринимать явных действий по сохранению ссылки на этот контекст?

Ответ:

 (1) сразу после выхода из функции 

 (2) после того, как будут потеряны ссылки на все функции, определенные при вызове данной 

 (3) после того, как будут потеряны ссылки на все функции, определенные при вызове данной, а также ссылки на все контексты их вызова  

 (4) после выхода из кадра, в котором была вызвана функция 


Номер 3
Как получить объект контекста вызова?

Ответ:

 (1) через arguments 

 (2) завести локальную переменную this 

 (3) с помощью локальной функции, возвращающей this 


Упражнение 5:
Номер 1
На какой объект указывает ссылка arguments.caller?

Ответ:

 (1) на функцию-объект, из которой произошел вызов выполняемой в данный момент функции 

 (2) на объект arguments функции, вызвавшей данную 

 (3) на вызванную функцию-объект 

 (4) на контекст вызова выполняемой в данный момент функции 

 (5) на контекст вызова той функции, которая вызвала исполняемую в данный момент 


Номер 2
Как обратиться к полям объекта-функции из самой этой функции?

Ответ:

 (1) через arguments.caller 

 (2) через arguments.callee 

 (3) через this 

 (4) получив сначала объект контекста вызова 


Номер 3
Какой способ не годится для параметризации функций, передаваемых в другие функции для последующего вызова?

Ответ:

 (1) поля объектов-функций 

 (2) функции - генераторы функций 

 (3) дополнительные аргументы 




Главная / Программирование / Flash MX для профессиональных программистов / Тест 5