JS 里面的 eval() 函数的作用和报错之后的处理 ...

将服务器端构建好的JSON数据转化为可用的JavaScript对象(另外简单的作用在下边)

使用时候报如下错误:

Uncaught SyntaxError: Unexpected token :

这是因为json字符串里面的value的值里面包含:冒号,所以在转化的时候出现错误。

如下格式就不会报错了。

objJson = eval("("+objJson+")") ;

添加上括号

"("+ objJson +")"

这个就转化ok

在转化的时候需要将JSON字符串的外面包装一层圆括号

var jsonObject =eval("("+ jsonFormat +")");

为什么要加括号?

加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。

举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:

alert(eval("{}");// return undefined

alert(eval("({})");// return object[Object]

2.另一个作用

eval() 函数可计算某个字符串,并执行其中的的 代码。

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

抛出异常的几种情况

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

<script type="text/javascript">

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))

</script>

输出:

200
4
27
将服务器端构建好的JSON数据转化为可用的JavaScript对象(另外简单的作用在下边) 使用时候报如下错误: Uncaught SyntaxError: Unexpected token : 这是因为json字符串里面的value的值里面包含:冒号,所以在转化的时候出现错误。 如下格式就不会报错了。 objJson = eval("("+objJson+")") ; 添加上括号 "("+ objJson +")" 这个就转化ok 在转化的时候需要将JSON字符串的外面包装一层圆括号 var jsonObject =eval("("+ jsonFormat +")"); 为什么要加括号? 加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。 举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的: alert(eval("{}");// return undefined alert(eval("({})");// return object[Object] 2.另一个作用 eval() 函数可计算某个字符串,并执行其中的的 代码。 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。 抛出异常的几种情况 如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。 如果非法调用 eval(),则抛出 EvalError 异常。 如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。 输出: 200 4 27
经验分享 程序员 微信小程序 职场和发展