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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
JavaScript开发时的五个注意事项
Dec 08 Javascript
jquery实现心算练习代码
Dec 06 Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
JS+Ajax实现百度智能搜索框
Aug 04 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 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
javascript some()函数用法详解
2014/11/13 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python使用gensim计算文档相似性
2016/04/10 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Flask之flask-script模块使用
2018/07/26 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
小学语文国培感言
2014/03/04 职场文书
小学生环保演讲稿
2014/04/25 职场文书
化学专业自荐信
2014/05/28 职场文书
银行求职信
2014/05/31 职场文书
基层党员对照检查材料
2014/08/25 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
酒会开场白大全
2015/06/01 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书