解决方法
你想直接使用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>中编写它标记并在浏览器中加载它将给出真实的结果.