一个eval()的运用栗子
1  | // 求数组中的最大值  | 
eval() 是全局对象的一个函数属性
参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。
如果 eval() 的参数不是字符串, eval() 会将参数原封不动地返回。
1  | eval(new String("2 + 2")); // 返回了包含"2 + 2"的字符串对象  | 
但是,不建议用eval()
- 它使用与调用者相同的权限执行代码,第三方代码可以看到某一个 
eval()被调用时的作用域; 字符串代码被恶意方(不怀好意的人)修改。 - 比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。
 
用Function代替eval
1  | new Function ([arg1[, arg2[, ...argN]],] functionBody)  | 
1  | // eval  | 
上面代码eval()要慢得多。
1  | // 我们回到最初那个求max的eval  | 
1  | // 一个更复杂栗子  |