我们日常写bug的时候很有时候会用到解析javascript语句字符串的功能,比如我们有时候可能希望函数把一些字符串当成javascript语句执行。
像以前比较老的模板语法很多就使用的Function或eval()等方法在这方面的能力
比如下面的代码
let fun = new Function('var name = "小明"; console.log(name);');
fun(); // 小明
上面的代码中声明fun函数的时候使用了Function构造器,参数是一段字符串,最后执行方法就能执行传入的字符串。
同时拥有这个能力的方法还有eval, setInterval, setTimeout 等方法:
eval('1+2'); // 3
setTimeout('1+2');
setInterval('1+3');
以上三行语句都是输出3;
不过无论是Function、setInterval 还是 setTimeout, 最终在内部都是使用了eval方法