Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   string to function (https://javascript.ru/forum/misc/36528-string-function.html)

clgs 18.03.2013 17:29

string to function
 
Добрый день.

Подскажите, как из этого
var qwe="function(act){console.log(act)}";

сделать это
var qwe=function(act){console.log(act)};


Указанный пример, только отчасти совпадает с реальным образцом. Т.ч. рекомендация "убрать кавычки" не принимается :)

Vasy 18.03.2013 17:48

function log(){console.log.apply(console, arguments)}


ну если я всё правильн опонял что тебе нужно то вот

рони 18.03.2013 17:57

clgs,
eval ?

clgs 18.03.2013 18:01

Vasy, в строке может быть произвольный код
рони, пробовал.
var qwe=evel("function(act){console.log(act)}");
//и
var qwe=function(act){console.log(act)};

не одно и тоже

Vasy 18.03.2013 18:17

http://javascript.ru/forum/misc/1357...ciya-eval.html
почитай мб будет полезно

Vasy 18.03.2013 18:18

eval("(function(){ })()");

clgs 18.03.2013 18:49

Сделал так
var qwe="function(act){console.log(act)}";
eval('var asd='+qwe);
qwe=asd;

danik.js 18.03.2013 19:03

Не не.

var qwe="function(act){console.log(act)}";
qwe = eval('(' + qwe + ')');

clgs 18.03.2013 19:10

Спасибо.
В реальном коде:
if(this._o.point_act) for(var k in this._o.point_act){
   if(typeof(this._o.point_act[k])=='string'){
      var t=this._o.point_act[k];
      this._o.point_act[k]=eval('('+t+')');
   }
}

danik.js 18.03.2013 19:27

typeof - не функция, а языковая конструкция, и скобки там не нужны.

nikita.mmf 18.03.2013 21:49

var qwe=new Function("act", "console.log(act)");

rgl 19.03.2013 15:57

Типа, прикол :-)

eval( "function(act){console.log(act)}".replace( /function\s*\(/, "function qwe(" ) );


Часовой пояс GMT +3, время: 17:10.