能打开各种网站的搜索引擎,网站建设企业网站优化,成品网站包含后台么,中英文网站如何建设eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的字符串#xff0c;并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。 举例说明 eval评估JavaScript表达式var bar …eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的字符串并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。 举例说明 eval评估JavaScript表达式 var bar bar;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: barfoo-bar;var foobar eval(if(bar bar) {barfoo-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-foofoobar eval(if(bar bar) {barfoo-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 undefinedalert(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 ));转载于:https://www.cnblogs.com/hgbgfg/p/5328181.html