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() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

该方法只接受原始字符串作为参数,如果 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


参考链接:点击打开链接

地址:http://www.jb51.net/article/40842.htm




相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页