博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(new Function("return " + json))();
阅读量:7199 次
发布时间:2019-06-29

本文共 809 字,大约阅读时间需要 2 分钟。

2015-9-15 16:26:05

这几天看到了这段代码:

var ToJson=function(A) {                            try                {            ///运行return中的函数体(return A);返回A。            return (new Function("return " + A))();        }        catch(e)        {            return "";        }    };

一直搞不明白是什么意思。问了同事之后说是字符串转成json用的,还是不明白原理是什么。遂百度之,看到了这样一个问答:

回答:new Function() 接收字符串,转换成函数。把"return" + str转换成函数的时候,str被转换成了对象(不是转换为JSON),然后使用(function(){return obj;})()方式立即执行new Function()生成的函数,函数只有一句return obj;执行结果就是str字符串转换而来的对象。

================ 2019年3月6日 =================

实际上就是利用了 Function 构造函数使用的是字符串的原理。
let b = JSON.stringify({ a: 1, b: '2' });console.log(b);console.log('return ' + b);let toJson = new Function('a', 'return ' + b);// { "a": 1, "b": "2" }// return { "a": 1, "b": "2" }

 

 

转载于:https://www.cnblogs.com/lswit/p/4810668.html

你可能感兴趣的文章
sqlserver查询指定树形结构的所有子节点
查看>>
webpack window dev-server配置
查看>>
【费用流】【网络流24题】【cogs 739】运输问题
查看>>
Avoiding Priority Inversion
查看>>
探索博客园的“打赏”模式
查看>>
古文两则
查看>>
Atitit.100% 多个子元素自适应布局属性
查看>>
Linux下GitLab的快速安装以及备份
查看>>
关闭Linux防火墙(iptables) 及 SELinux
查看>>
VS .sln .csproj 文件的右键编译
查看>>
Laravel与Repository Pattern(仓库模式)
查看>>
CentOS安装emacs24.2命令
查看>>
USACO Sorting a Three-Valued Sequence
查看>>
android 6.0权限全面详细分析和解决方案
查看>>
Docker 简介
查看>>
[深入JUnit] 测试运行的入口
查看>>
XSLT简介
查看>>
Java中的Swing键盘绑定案例
查看>>
Raw-OS源代码分析之任务删除与总结
查看>>
【微信小程序】获取轮播图当前图片下标、滑动展示对应的位数、点击位数展示对应图片...
查看>>