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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
jQuery选择头像并实时显示的代码
Jun 27 Javascript
Jquery中删除元素的实现代码
Dec 29 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 Javascript
JS实现盒子拖拽效果
Feb 06 Javascript
Vue computed 计算属性代码实例
Apr 22 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 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
curl实现站外采集的方法和技巧
2014/01/31 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
jQuery对象初始化的传参方式
2015/02/26 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
JavaScript中关于base64的一些事
2019/05/06 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
python正则分组的应用
2013/11/10 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Django框架模板用法入门教程
2019/11/04 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
python爬虫工具例举说明
2020/11/30 Python
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
乡镇信息公开实施方案
2014/03/23 职场文书
新品发布会主持词
2014/04/02 职场文书
员工安全责任书范本
2014/07/24 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年公务员工作总结
2015/04/24 职场文书
招商银行收入证明
2015/06/17 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
python创建字典及相关管理操作
2022/04/13 Python
python中 .npy文件的读写操作实例
2022/04/14 Python
Java Redisson多策略注解限流
2022/09/23 Java/Android