将字符串更改为javascript中的函数(不是eval)

前端之家收集整理的这篇文章主要介绍了将字符串更改为javascript中的函数(不是eval)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var foo = "function (){ alert('meee'); }";
foo();

我已经尝试了上面的但是它不起作用是否有任何其他方法来执行该功能而不使用eval?

日Thnx

解决方法

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

猜你在找的JavaScript相关文章