Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[js] 第38天 说说你对eval的理解 #142

Open
haizhilin2013 opened this issue May 23, 2019 · 13 comments
Open

[js] 第38天 说说你对eval的理解 #142

haizhilin2013 opened this issue May 23, 2019 · 13 comments
Labels
js JavaScript

Comments

@haizhilin2013
Copy link
Collaborator

第38天 说说你对eval的理解

@haizhilin2013 haizhilin2013 added the js JavaScript label May 23, 2019
@wenyejie
Copy link

  • 不安全的,
  • 容易出错, 因为你不知道你传入的参数是什么鬼
  • 性能底下.
  • 某种情况下跟new Function(), setTimeout, setInterval类似
  • 不利于代码可维护性, 可拓展性
  • 不是在无可奈何的情况下, 请不要使用

@AnsonZnl
Copy link
Contributor

eval() 相当于一个小型的js解析器,接受一个字符串,可以把字符串解析成js代码并执行,所以有很有大的安全隐患,并且写进去的代码都是字符串,不利于维护,使用它执行代码性能也会大大折扣,所以正常情况下不建议使用。

@tzjoke
Copy link

tzjoke commented May 28, 2019

eval 确实能不用就不用,不过在某些业务场景下,eval 比其他方法要简单很多,可以认为是一种hack,但是说到底还是不推荐使用

@myprelude
Copy link

执行 js代码,有性能问题,又可以执行一些恶意代码。但是webpack中就用到了eval,所有一个东西用途还是需要看场景。

@DarthVaderrr
Copy link

终极hack方法,从来不用

@seho-dev
Copy link

seho-dev commented Sep 7, 2019

webpack中处理soucemap就用到了eval

@Konata9
Copy link

Konata9 commented Sep 17, 2019

eval 可以把字符串转为 javaScript 代码运行。一般提倡能不用就不用,由于是字符串,维护上会不易于维护,有很大的安全隐患并且运行效率上会较低。

但是在特殊的场景下,使用起来会非常方便。我自己在工具库中获取深度对象的值时使用过 evalconst value = eval('a.b.c')

@zlqGitHub
Copy link

var json = '{"a": "Hello", "b": "World"}';  //标准json字串
var json2 = '{a: "Hello", b: "World"}';  //非标准

注意:非标准的JSON字串转js对象时会报错,此时用eval()方法,它可以将标准与非标准的json进行转换。
var obj = eval("("+json2+")");

@blueRoach
Copy link

eval()接收一字符串,他会执行其中的JS代码
不安全,因为是将字符串解析成JS代码并执行
不利于,维护因为传的是字符串
性能低

@Alex-Li2018
Copy link

webpack使用的就是eval执行的压缩之后的代码

@MrZ2019
Copy link

MrZ2019 commented Oct 28, 2020

eval() 相当于一个小型的js解析器,接受一个字符串,可以把字符串解析成js代码并执行,所以有很有大的安全隐患,并且写进去的代码都是字符串,不利于维护,使用它执行代码性能也会大大折扣,所以正常情况下不建议使用。

@jamsehua
Copy link

webpack中处理soucemap就用到了eval

eval-souce-map和这是同一个东西吗

@xiaoqiangz
Copy link

eval是可以执行js代码的,但是也可以执行恶意代码,对性能也有影响,要视情况而用,一般正常情况不建议使用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js JavaScript
Projects
None yet
Development

No branches or pull requests