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 相关文章推荐
php实例分享之实现显示网站运行时间
May 20 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
Sep 15 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
May 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+dbfile开发小型留言本
2006/10/09 PHP
php木马攻击防御之道
2008/03/24 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
django 微信网页授权登陆的实现
2019/07/30 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
总经理秘书工作职责
2013/12/26 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
农业项目建议书
2014/08/25 职场文书
规范化管理年活动总结
2014/08/29 职场文书
信仰心得体会
2014/09/05 职场文书
给老婆道歉的话
2015/01/20 职场文书
毕业生个人自荐书
2015/03/05 职场文书
离婚上诉状范文
2015/05/23 职场文书
致运动员赞词
2015/07/22 职场文书
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python