executing anonymous functions created using JavaScript eval()

eval, javascript

Solution

How about this?

var func = new Function('alert("hello");');

To add arguments to the function:

var func = new Function('what', 'alert("hello " + what);');
func('world'); // hello world

Do note that functions are objects and can be assigned to any variable as they are:

var func = function () { alert('hello'); };
var otherFunc = func;
func = 'funky!';

function executeSomething(something) {
    something();
}
executeSomething(otherFunc); // Alerts 'hello'

Problem

I have a function and its contents as a string. ``` var funcStr = "function() { alert('hello'); }"; ``` Now, I do an eval() to actually get that function in a variable. ``` var func = eval(funcStr); ``` If I remember correctly, in Chrome and Opera, simply calling ``` func(); ``` invoked that function and the alert was displayed. But, in other browsers it wasn't the case. nothing happened. I don't want an arguement about which is the correct method, but how can I do this? I want to be able to call variable(); to execute the function stored in that variable.

Original source