第38天 说说你对eval的理解
eval() 相当于一个小型的js解析器,接受一个字符串,可以把字符串解析成js代码并执行,所以有很有大的安全隐患,并且写进去的代码都是字符串,不利于维护,使用它执行代码性能也会大大折扣,所以正常情况下不建议使用。
eval 确实能不用就不用,不过在某些业务场景下,eval 比其他方法要简单很多,可以认为是一种hack,但是说到底还是不推荐使用
执行 js代码,有性能问题,又可以执行一些恶意代码。但是webpack中就用到了eval,所有一个东西用途还是需要看场景。
终极hack方法,从来不用
webpack中处理soucemap就用到了eval
eval 可以把字符串转为 javaScript 代码运行。一般提倡能不用就不用,由于是字符串,维护上会不易于维护,有很大的安全隐患并且运行效率上会较低。
但是在特殊的场景下,使用起来会非常方便。我自己在工具库中获取深度对象的值时使用过 eval,const value = eval('a.b.c')
var json = '{"a": "Hello", "b": "World"}'; //标准json字串
var json2 = '{a: "Hello", b: "World"}'; //非标准
注意:非标准的JSON字串转js对象时会报错,此时用eval()方法,它可以将标准与非标准的json进行转换。
var obj = eval("("+json2+")");
eval()接收一字符串,他会执行其中的JS代码
不安全,因为是将字符串解析成JS代码并执行
不利于,维护因为传的是字符串
性能低
webpack使用的就是eval执行的压缩之后的代码
eval()相当于一个小型的js解析器,接受一个字符串,可以把字符串解析成js代码并执行,所以有很有大的安全隐患,并且写进去的代码都是字符串,不利于维护,使用它执行代码性能也会大大折扣,所以正常情况下不建议使用。
webpack中处理soucemap就用到了eval
eval-souce-map和这是同一个东西吗
Most helpful comment