作家
登录

javascript使用eval或者new Function进行语法检查

作者: 来源:www.28hudong.com 2013-03-30 01:15:48 阅读 我要评论

使用new Function( ) 来进行语法检查 eval( ) 方法是不能乱用的,在不适当的时候使用eval( ) 方法可能导致整个程序都会出问题的; 而new Function( ) 就没这么大问题。虽然new Function( ) 在任何情况下,构造的函数都是在全局作用域下直接工作的,但只作语法检查的话,并不会因为作用域问题而产生意外结果,只要你不直接调用通过它构造的新函数。 在eval( ) 接受的参数前面增加“0,” 其实这是由于IE中存在一个bug。出于某种原因,如果你在IE 中想通过调用eval( ) 来动态地构造一个函数。 例如: eval('(function(){ /* code here */ })'); 在IE 中得到的返回将是undefined,而其它浏览器则会正确地返回这个新构造的函数的引用。 最简单有效的解决办法是:在前边加上“0,”,这样就能在所有主流浏览器中兼容。 例如: eval('0,function(){ /* code here */ }'); 注:在IE9 的Chakra 引擎中,这个问题已经解决。 使用数组对象的concat方法来产生新数组 把单个对象参数转化为只包含一个元素的数组再来处理,可以使用“[ ].concat(o)”的形式。 例如: 复制代码 代码如下: var arr1 = [1,2]; var arr2 = [3,4]; var arr3 = arr1.concat(arr2); alert(arr3.length); 另一种方式是:if (!(o instanceof Array)) o = [o]; // 和ECMAScript 5 中的isArray 相比不够严谨。 网友回复: 1.eval 确实不能乱用; 2.在IE eval 的时候,我的解决方法是在执行函数体内return ; 3.Array.prototype.concat.apply([1,2,3],[4,5,6]);

  推荐阅读

  IE下js调试工具Companion.JS

做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先这种语言语法比较灵活,它是一种弱类型的脚本语言,很多错误是无法控制的,这些不谈,最痛苦的是没有什么好的调试工具,现在的情况比以前稍好,在Firef>>>详细阅读


本文标题:javascript使用eval或者new Function进行语法检查

地址:http://www.17bianji.com/kaifa2/JS/25608.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)