首页 » Web前端 » phpevaljs技巧_javascript eval和JSON之间的事理与联系

phpevaljs技巧_javascript eval和JSON之间的事理与联系

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去实行包含在字符串里的表达式或者一系列的合法的JavaScript语句。
eval函数将把末了一个表达式或者语句所包含的值或引用作为返回值。

举例解释

phpevaljs技巧_javascript eval和JSON之间的事理与联系 phpevaljs技巧_javascript eval和JSON之间的事理与联系 Web前端

eval评估JavaScript表达式

var bar = 'bar';

phpevaljs技巧_javascript eval和JSON之间的事理与联系 phpevaljs技巧_javascript eval和JSON之间的事理与联系 Web前端
(图片来自网络侵删)

var foobar = eval('"foo" + bar');

alert(foobar);

eval评估JavaScript语句

var bar = 'bar';

// if variable bar equals 'bar', foobar is the result of // last executing statement: bar="foo-bar";

var foobar = eval('if(bar == "bar") {bar="foo-bar";} else {bar = "bar-foo";}');

alert(foobar);// change the valuebar = 'foo';

// now our the last executed statement is: bar = "bar-foo";

// therefore the value of variable foobar has been changed

// into 'bar-foo'foobar = eval('if(bar == "bar") {bar="foo-bar";} else {bar = "bar-foo";}');

alert(foobar);

JSON的格式

JSON的格式是由大括号和由冒号(:)构成的名值对所组成的。
把稳JSON格式与工具字面量 (object literals) 的差异:JSON的名字部分严格用引号+名字来表示。

举例解释

工具的字面量

var objectLiteral = { name: "Objector.L", age: "24", special: "JavaScript", sayName: function() { return this.name; }

};

JSON工具

var jsonFormat = { "summary": "Blogs", "blogrolls": [ { "title": "Explore JavaScript", "link": "http://example.com/" }, { "title": "Explore JavaScript", "link": "http://example.com/" } ]

};

eval和JSON

由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与做事器之间的传输格式逐渐地盛行起来,进而涌现的问题是如何将做事器端构建好的JSON数据转化为可用的JavaScript工具。
利用eval函数无疑是一种大略而直接的方法。
在转化的时候须要将JSON字符串的表面包装一层圆括号:

var jsonObject = eval("(" + jsonFormat + ")");

为什么要加括号?

加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候逼迫将括号内的表达式(expression)转化为工具,而不是作为语句(statement)来实行。
举一个例子,例如工具字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是实行了一句空语句。
以是下面两个实行结果是不同的:

alert(eval("{}"); // return undefined

alert(eval("({})");// return object[Object]

JSON格式的名字部分为什么要加引号?

由于eval函数会将{foo:”bar”}阐明成合法的JavaScript语句,而非表达式。
但是人们每每想要的是让eval将这段代码阐明成一个工具。
以是JSON格式会逼迫你去在名字的外侧加上引号再结合圆括号,这样eval就不会缺点的将JSON阐明成代码块。

举例解释

eval缺点解析语义

alert(eval('{foo:"bar"}')); // return "bar", incorrect

eval精确解析JSON

alert(eval('({"foo": "bar"})')); // return JSON object, correct

结论

理解eval的事情事理和json的严格的限定格式,合理结合eval和json运用于JavaScript的数据通报和工具转换。

following this format:

eval('{' + jsonString + ')');

标签:

相关文章

互联网地址变革,未来网络世界的导航之光

随着互联网技术的飞速发展,网络地址(IP地址)这一基础性资源逐渐成为制约网络发展的重要因素。为了应对全球互联网地址资源枯竭的困境,...

Web前端 2024-12-05 阅读0 评论0

互联网时代的网站内容优化步骤

随着互联网的快速发展,网站已经成为企业和个人展示形象、传播信息、拓展业务的重要平台。网站内容作为网站的核心,其质量直接影响着网站的...

Web前端 2024-12-05 阅读0 评论0