之前对于eval("("+result+")")这个函数比较困扰,查看资料现在清楚了很多,现将个人理解贴出来,一起学习共同进步!

       起因是做现项目时,参用很久之前一个项目的代码,少了一行eval("("+result+")");控制台始终运行不出结果,查阅w3c也不是很清楚——点击打开链接

       【JavaScript】关于eval("("+result+")")的认识

       大致意思是:eval方法是将json字符串转换成json对象

       但更具体的情况(前后端传输json数据,后端echo json_encode()方法把Array形式的查询结果自动转换成json格式输出)时,【JavaScript】关于eval("("+result+")")的认识

【JavaScript】关于eval("("+result+")")的认识

       这时,如果不加eval函数js是获取不到里面的属性的,根本原因在于——由于json是以“{}”的方式来开始以及结束的,在js中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

       所以把后台传输过来json字符串转换成js的json对象,js就能获取其中的属性了

       

       弄懂了这个,引发了更深层的思考,同样都是后端json_encode输出到前端js,为什么很多js没加eval函数都可以自动转换,后来看到是因为ajax已经加过dataType:'json'了。(制定url的返回值以json格式)

       猛然看到自己之前忘记写ajax第四个参数,如果加上,就不需要再写eval函数了

       【JavaScript】关于eval("("+result+")")的认识

      

 

      PS:(网上资料)——点击打开链接

       

 

 

相关文章:

  • 2021-06-01
  • 2021-07-24
  • 2021-12-20
  • 2022-03-01
  • 2021-11-21
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-12
  • 2021-05-22
  • 2021-10-25
  • 2021-11-30
相关资源
相似解决方案