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 相关文章推荐
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
基于JavaScript实现添加到购物车效果附源码下载
Aug 22 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
微信小程序实现身份证取景框拍摄
Sep 09 Javascript
vue-cli3 热更新配置操作
Sep 18 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如何编写易读的代码
2007/07/10 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
js实现左右轮播图
2020/01/09 Javascript
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
Python中is和==的区别详解
2018/11/15 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
实例详解Python模块decimal
2019/06/26 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Python 列表的清空方式
2020/01/13 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
在校硕士自我鉴定
2014/01/23 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
西柏坡观后感
2015/06/08 职场文书
小学运动会开幕词
2016/03/04 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
vue判断按钮是否可以点击
2022/04/09 Vue.js
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL