javascript使用eval或者newFunction进行语法检查_javascript技巧
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript使用eval或者newFunction进行语法检查_javascript技巧,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1214字,纯文字阅读大概需要2分钟。
内容图文
使用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]);
内容总结
以上是互联网集市为您收集整理的javascript使用eval或者newFunction进行语法检查_javascript技巧全部内容,希望文章能够帮你解决javascript使用eval或者newFunction进行语法检查_javascript技巧所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。