【javascript】关于eval("("+result+")")的认识
来源:互联网 发布:大数据平台是什么 编辑:程序博客网 时间:2024/06/07 23:17
之前对于eval("("+result+")")这个函数比较困扰,查看资料现在清楚了很多,现将个人理解贴出来,一起学习共同进步!
起因是做现项目时,参用很久之前一个项目的代码,少了一行eval("("+result+")");控制台始终运行不出结果,查阅w3c也不是很清楚——点击打开链接。
大致意思是:eval方法是将字符串转变成可以执行的javascript代码。
但更具体的情况(前后端传输json数据,后端echo json_encode()方法把Array形式的查询结果自动转换成json格式输出)时,
这时,如果不加eval函数js是获取不到里面的属性的,根本原因在于——由于json是以“{}”的方式来开始以及结束的,在js中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
所以把后台传输过来json字符串转换成js的json对象,js就能获取其中的属性了
弄懂了这个,引发了更深层的思考,同样都是后端json_encode输出到前端js,为什么很多js没加eval函数都可以自动转换,后来看到是因为ajax已经加过dataType:'json'了。(制定url的返回值以json格式)
猛然看到自己之前忘记写ajax第四个参数,如果加上,就不需要再写eval函数了
PS:(网上资料)——点击打开链接
阅读全文