 
			
				22.12.2011, 19:13
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 сегодня в 12:34|Комментир 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2011 
					
					
					
						Сообщений: 1,180
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как тип String переделать в js код?
			 
			
		
		
		
		Извиняюсь если не так выразился, но задача такого рода: если допустим переменная: var a = "function a() { alert('hello world') }" Можно ли ее в js коде оформить как код? 
<script>
function a() {
var a = 'function a() { alert('hello world') }' //сделать это не переменной, а кодом?
}
</script>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 19:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 что-то знаю 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.05.2009 
					
					
					
						Сообщений: 5,176
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 19:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 сегодня в 12:34|Комментир 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2011 
					
					
					
						Сообщений: 1,180
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<script>
var a = "function a() { alert('hello world') }"
eval(a)
a()
</script>
Спасибо, разобрался =)  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 20:11
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 сегодня в 12:34|Комментир 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2011 
					
					
					
						Сообщений: 1,180
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<script>
function getFuncTime(funct) {
var _function = funct
eval(funct) //получили ф-ию в коде
var reg = _function.match(/function\s(\w*\(\))/) //изъяли оттуда имя ф-ии, лежит в reg[1]
console.time('time')
reg[1] //запускаем ф-ию
console.timeEnd('time')
}
getFuncTime("function a() { for(i=0;i<1000;i++) {} }")
</script>
Хотел сделать такую ф-ию, которая показывала бы за какое время исполняется та или иная ф-ия. Все не могу понять почему в консоли работа цикла показывается за  time: 0ms (20µsec), где я ошибся? Все свои мысли оставил в комментариях в коде...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 21:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 9xakep, имя функции можно получить через св-во name. Во-первых. А во-вторых, у вас какой-то странный ход мыслей... Функция-то может быть и безымянной. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 22:05
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 сегодня в 12:34|Комментир 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2011 
					
					
					
						Сообщений: 1,180
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 1)ну name я и так получил) (умный в гору не пойдет, умный гору обойдет..ага...) 
2)мне пока это сделать бы, я в идеале хотел вообще так: getFucTime(function_name(), alert/console/text) Последнее: через что отобразить. А в чем ошибка-то собственно говоря? 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось 9xakep, 22.12.2011 в 22:09.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 22:50
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function getFunctionRunTime(func){
 t1= +(new Date());
 func();
 console.log(+(new Date()) - t1);
};
UPD: поправил скобку, была опечатка.  
		
	
		
		
		
		
		
			
		
		
		
		
		
						  
				
				Последний раз редактировалось trikadin, 23.12.2011 в 19:25.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.12.2011, 23:57
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.05.2009 
					
					
					
						Сообщений: 1,163
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 9xakep, 
 я вообще в вашем коде цикла не увидел, вы о чём? И вообще, если запускать reg[1], то наверно так уж - eval(reg[1])(); 
		
	
		
		
		
		
		
			
				__________________ 
				Нужно равняться на лучших, а не оправдываться за счёт худших.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.12.2011, 08:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 сегодня в 12:34|Комментир 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.04.2011 
					
					
					
						Сообщений: 1,180
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от trikadin
			 
		
	 | 
 
	
		
function getFunctionRunTime(func){
 t1= +(new Date()};
 func();
 console.log(+(new Date()) - t1);
};
	 | 
 
	
 
 Так просто оказвыается, я думал надо будет брать ф-ию(искать ее каким либо образом в коде) приводить к String, и дальше все как у меня.    
 "t1= +(new Date() };" Опечатка или тут эта скобка нужна?
 
	
 
	
		
			Сообщение от Nekromancer
			 
		
	 | 
 
	
		9xakep, 
 я вообще в вашем коде цикла не увидел, вы о чём? И вообще, если запускать reg[1], то наверно так уж - eval(reg[1])();
	 | 
 
	
 
 Спасибо, вот этот код вроде как работает:
 
<script>
function getFuncTime(funct) {
var _function = funct
var reg = _function.match(/function\s(\w*)/) //изъяли оттуда имя ф-ии, в нашем случае a
console.time('time')
eval(funct)
eval(reg[1])()
console.timeEnd('time')
}
getFuncTime("function a() { var m = [1,2,2,22]; for(var i=0;i<m.length;i++) { m[i] }  }")
</script>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.12.2011, 08:59
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2011 
					
					
					
						Сообщений: 43
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Eval как и в пхп, только ее считают небезопасной, мол слишком много свободы для непредсказуемой строки, незнаю в чем тут логика, если твой код и твой евал обрабатывает строго регламентированную функцию, где опасность? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |