Как тип String переделать в js код?
Извиняюсь если не так выразился, но задача такого рода: если допустим переменная: var a = "function a() { alert('hello world') }" Можно ли ее в js коде оформить как код?
<script> function a() { var a = 'function a() { alert('hello world') }' //сделать это не переменной, а кодом? } </script> |
eval() |
<script> var a = "function a() { alert('hello world') }" eval(a) a() </script> Спасибо, разобрался =) |
<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), где я ошибся? Все свои мысли оставил в комментариях в коде... |
9xakep, имя функции можно получить через св-во name. Во-первых. А во-вторых, у вас какой-то странный ход мыслей... Функция-то может быть и безымянной.
|
1)ну name я и так получил) (умный в гору не пойдет, умный гору обойдет..ага...)
2)мне пока это сделать бы, я в идеале хотел вообще так: getFucTime(function_name(), alert/console/text) Последнее: через что отобразить. А в чем ошибка-то собственно говоря? |
function getFunctionRunTime(func){ t1= +(new Date()); func(); console.log(+(new Date()) - t1); }; UPD: поправил скобку, была опечатка. |
9xakep,
я вообще в вашем коде цикла не увидел, вы о чём? И вообще, если запускать reg[1], то наверно так уж - eval(reg[1])(); |
Цитата:
"t1= +(new Date()};" Опечатка или тут эта скобка нужна? Цитата:
<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> |
Eval как и в пхп, только ее считают небезопасной, мол слишком много свободы для непредсказуемой строки, незнаю в чем тут логика, если твой код и твой евал обрабатывает строго регламентированную функцию, где опасность?
|
Часовой пояс GMT +3, время: 10:10. |