首页 > eval()的存在意义

eval()的存在意义

eval()的存在意义是什么?


比如你要从主线程往wokers里面传一个函数并执行,正常情况下worker是不允许传递对象的,这个时候你就和可以把需要的函数包到闭包里面,然后转化成字符串就可以传递了,然后在worker线程用eval解析那个闭包,就可以得到那个函数。所以,eval比较适合字符串解析


原生自带的一个函数,用法可以写成eval("("+string+")")


用来解析json格式的数据,很简单吧


个人也认为存在的意义不大,而且就算存在也不应该使用。应该去掉。
可能是早期需要一些反射的特性而遗留下来的吧。


这是一个JavaScript的全局函数,使用方法:eval(string),用于计算string这个字符串,并执行其中的JavaScript 代码。比如:

eval('3+4')   //返回7

需要注意的是eval(string)中的string必须是原始的字符串,string里面不能在含有参数,eval()在实际中很少使用


写一些框架的时候就需要了,需要动态的加载并执行一些用户定义的js,比如webcomponent中把js写在script标签中,就需要把js当成字符串来用eval来执行了。


上面的同学也写了不少了,我就举两个小例子吧。

  1. JQuery的globalEval,这个鼎鼎大名的动态加载js的方法。

  2. 热加载模块代码时可以选用的方法。

当然,这种方式逐渐被淘汰掉了,execScript虽然兼容性不太好但配合动态添加script节点也能解决大部分需求。


不建议使用,你就当他不存在吧.


new Function(string)和这个类似,一般用于处理字符串代码有用。


eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

【热门文章】
【热门文章】