(EVAL); / /这个
方法不
推荐 解析方法
一种或两种方法的
区别 首先,我们用JSON格式初始化一个对象:
无功jsondate =名称{:周星驰
无功jsonobj = eval('(' + jsondate + ')'); / /(EVAL)方法;
无功jsonobj = JSON.parse(jsondate); / / JSON.parse()方法;
然后打电话到
控制台:
console.log(jsonobj。名称); / /两方法可以
正确的
输入周星驰
那么这两种方法
有什么区别呢(下面我们稍微
修改一下代码,蓝色
字体是修改的部分)
无功jsondate =名称{:警告(你好)、年龄:23 }
无功jsonobj = eval('(' + jsondate + ')'); / /(EVAL)方法;
console.log(jsonobj。年龄); / /将首先
执行警报输出Hello然后输出23
Change JSON.parse();方法:
无功jsondate =名称{:警告(你好)、年龄:23 }
无功jsonobj = JSON.parse(jsondate); / / JSON.parse()方法;
cosole.log(jsonobj。年龄) / /报错,这个
错误告诉我们,字符串无效
摘要:eval();当方法是解析的,它不会判断字符串是否是合法的,并在JSON对象的js方法也会被执行。这是非常危险的,而JSON.parse(),该方法的优点是不需要多说,推荐这种方法。(一个未知的朋友可以在自己的主机上测试它)
二、可拓问题
复制代码代码如下所示:
无功jsondate =名称{:周星驰
你可以看到上面的测试被用来装在红色括号外部引用,这是关键,行情却往往被忽视,因为eval(JSON。解析器);和();这两种方法的
参数可以只接受字符串只能解析字符串!!
我没有思维,我们在初始化的时候没有引号,它本身是一个JS对象,你可以直接访问对象本身的
属性和方法;为什么引用到一个字符串然后eval(JSON。解析);或();不
解决,既不环保低效的
原因很简单:前端只能为后台提供字符串数据格式,后台返回前台查看返回的数据格式,字符串在使用后必须解析。
这个小问题通常被忽略,不太关心,我之所以好奇是因为我对
背景了解不够,把这个问题抛出来,希望能帮助一些不熟悉背景的朋友。知道正在发生的事情自然会加深
内存,在开发过程中不会遗漏。
以上是本文的全部内容,希望大家能喜欢。