JavaScript中的eval()函数使用介绍

前端技术 2023/09/08 JavaScript

在JavaScript中,可以使用eval()函数来解析字符串中的JavaScript代码,并返回相应的代码执行结果:


复制代码 代码如下:

console.log(eval(\"42 * 2\"));//84


就本质而言,eval()是JavaScript全局对象的一个函数。比如,上述代码等价于:


复制代码 代码如下:

console.log(this.eval(\"42 * 2\"));//84


不过在使用eval()语句时,一般都采用上述第一种做法,也即忽略全局对象直接使用eval()。

eval()的使用

基于以下两个原因,除非确实需要,不然应尽量避免在代码中使用eval()语句:

1.从逻辑上来说,字符串应该用于储存程序运行过程中的内容、信息,而不应该用于储存具体的计算逻辑。
2.由于eval()参数为字符串,而对于一段字符串无法词法进行,因此对于eval()调用语句,JavaScript解释器无法进行优化。

eval()的返回值

eval()的返回值遵循以下规则:

1.如果eval()的参数不是字符串,那么eval()将直接返回参数。
2.如果eval()的参数是字符串,那么eval()将这个字符串解析成代码后进行执行,并返回最后一行代码执行的结果。
3.如果字符串无法解析成合法的代码,eval()将抛出SyntaxError错误。
4.如果字符串能够被解析成合法的代码,但是在执行这一代码过程中报错,那么这个错误会上报给eval()语句,并由eval()抛出。

复制代码 代码如下:

console.log(eval([1,2,3]));//[1, 2, 3]
console.log(typeof eval([1,2,3]));//object

console.log(eval(\"42 */ 2\"));//SyntaxError
console.log(eval(\"42 * 2; 22 * 3;\"));//66. eval returns the result of last expression/statement
console.log(eval(\"null.toString()\"));//TypeError, exception in eval-ed code will be propagated outside eval().

本文地址:https://www.stayed.cn/item/22373

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。