永发信息网

微信小程序不支持eval 和JSON.parse 等函数吗

答案:3  悬赏:40  手机版
解决时间 2021-01-04 21:51
  • 提问者网友:書生途
  • 2021-01-04 00:48
微信小程序不支持eval 和JSON.parse 等函数吗
最佳答案
  • 五星知识达人网友:夜余生
  • 2021-01-10 04:57
支持JSON.parse
不支持eval
因为安全关系 eval没有
反正是个坑
全部回答
  • 1楼网友:纵马山川剑自提
  • 2021-01-10 06:57
json.parse()用来将标准json字符串转换成js对象; eval()除了可以将json字符串(非标准的也可以,没有json.parse()要求严格)转换成js对象外还能用来动态执行js代码。 例如:json.parse('{"name":"张三"}')能被成功转换,但是json.parse('{name:"张三"}')、json.parse('{\'name\':"张三"}')和json.parse('{"name":\'张三\'}')都是不能转换的;然而后面那三个可用用eval()来转换;另外eval()还能执行js代码,如:eval('alert("你好!")');
  • 2楼网友:往事隔山水
  • 2021-01-10 06:07
对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:vardataObj=eval("("+data+")");//转换为json对象为什么要eval这里要添加“("("+data+")");//”呢?原因在于:eval本身的问题。由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:alert(eval("{}");//returnundefinedalert(eval("({})");//returnobject[Object]
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯