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


Posted in Javascript onOctober 16, 2010

使用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 相关文章推荐
Javascript attachEvent传递参数的办法
Dec 14 Javascript
JavaScript学习笔记(十)
Jan 17 Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
利用js读取动态网站从服务器端返回的数据
Feb 10 Javascript
jquery实现pager控件示例
Apr 09 Javascript
jQuery分组选择器用法实例
Dec 23 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
MockJs结合json-server模拟后台数据
Aug 26 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 Javascript
javascript实现前端分页效果
Jun 24 Javascript
自己整理的一个javascript日期处理函数
Oct 16 #Javascript
理解Javascript_10_对象模型
Oct 16 #Javascript
理解Javascript_09_Function与Object
Oct 16 #Javascript
理解Javascript_08_函数对象
Oct 15 #Javascript
javascript instanceof 内部机制探析
Oct 15 #Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 #Javascript
JavaScript 对象模型 执行模型
Oct 15 #Javascript
You might like
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
php MySQL与分页效率
2008/06/04 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
php实现留言板功能
2017/03/05 PHP
设定php简写功能的方法
2019/11/28 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
将python代码和注释分离的方法
2018/04/21 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
书法兴趣小组活动总结
2014/07/07 职场文书
实习护士自荐信
2015/03/25 职场文书
情感电台广播稿
2015/08/18 职场文书
学习委员竞选稿
2015/11/20 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Java实现带图形界面的聊天程序
2022/06/10 Java/Android