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 相关文章推荐
Add a Formatted Table to a Word Document
Jun 15 Javascript
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
javascript实现延时显示提示框效果
Jun 01 Javascript
Vue-router 中hash模式和history模式的区别
Jul 24 Javascript
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
vue项目中使用rem,在入口文件添加内容操作
Nov 11 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
jquery tab标签页的制作
2010/05/10 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python使用Matplotlib画饼图
2018/09/25 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
Python识别验证码的实现示例
2020/09/30 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
市场部管理制度
2014/02/02 职场文书
2014年残联工作总结
2014/11/21 职场文书
本溪水洞导游词
2015/02/11 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js