JS中的eval()函数使用
eval()函数可以计算某个字符串,并且执行其中的JavaScript代码
其中一些基础的使用可以参考这个地址:https://www.w3school.com.cn/jsref/jsref_eval.asp
这篇文章的主要目的是说下,eval()函数如果调用匿名函数该如何使用:
1 <!DOCTYPE html> 2 <html> 3 <body> 4 5 <h1>把字符串转换为函数</h1> 6 7 <p id="demo"></p> 8 9 <script> 10 var text = '{"name":"Bill Gates", "age":"function() {return 62;}", "city":"Seattle"}'; 11 var obj = JSON.parse(text); 12 obj.age = eval("(" + obj.age + ")"); //这里加(),是因为执行的是一个匿名函数 13 document.getElementById("demo").innerHTML = obj.name + ", " + obj.age(); 14 </script> 15 16 </body> 17 </html>
如上所示,如果要执行匿名函数,需要先加个“()”这其实和JS自调用的语法有点相似,只不过eval()它不允许调用的函数传参,而自调用函数可以传参。
自调用例子:
1 //函数的自调用 2 //一次性函数 3 (function (){ 4 console.log("一次性"); 5 6 })(); //无参 7 (function(win){ 8 var num=20; 9 win.num=num; 10 })(window); //有参
但是,应该避免在 JSON 中使用函数,因为函数会失去其作用域,而且还需要使用 eval() 将它们转换回函数,这样太麻烦了。