解决方法
你想直接使用Function构造函数,正如Anders所说.所有参数都是字符串.最后一个参数是函数体,任何前导参数都是函数所采用的参数的名称.
借用安德斯的例子,
var multiply = new Function("x","y","return x * y");
就像写作一样
var multiply = function (x,y) { return x * y }
在你的情况下,你有“function(){alert(‘meee’);}”,你想将它作为函数保存到var foo.
var fn = "function (){ alert('meee'); }"; var foo = new Function("return ("+fn+")")(); foo(); // alerts "meee"
Function和eval之间的区别是eval在私有范围内运行,而Function在全局范围内运行.
var x="haha",y="hehe"; function test () { var x=15,y=34; eval("alert('eval: ' + x + ',' + y)"); new Function("alert('Func: ' + x + ',' + y)")(); } test(); // eval: 15,34 // Func: haha,hehe
不要试图在控制台中运行它,你会得到一个欺骗性的结果(控制台使用eval).在< script>中编写它标记并在浏览器中加载它将给出真实的结果.