eval 好不好取决于怎么使用它,一般认为的缺点:
1. 可读性非常差
2. 不好再做优化和编译
3. 会轻微增加性能消耗
4. 不安全,比如 eval input 的值考虑 eval 的时候认为所有的问题不用 eval 都可以解决的,比如给 obj.prop1, obj.prop2 …… 这序列赋值,可以 obj[prop + 'index'] = 'xxx' 。然后确实不能解决问题的时候再用,其实 eval 也没那么烂,因为 ECMA 5 内置的 JSON.parse 内部也是用 eval,包括 jQuery 的 parseJSON 也用 eval。
网上也有很多讨论,可以搜索下网上