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 相关文章推荐
用Juery网页选项卡实现代码
Jun 13 Javascript
functional继承模式 摘自javascript:the good parts
Jun 20 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
JavaScript阻止回车提交表单的方法
Dec 30 Javascript
js中数组的常用方法小结
Dec 30 Javascript
angular directive的简单使用总结
May 24 Javascript
详解vue组件中使用路由方法
Feb 12 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
JavaScript实现简单随机点名器
Nov 21 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
Java中final关键字详解
2015/08/10 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
javascript Excel操作知识点
2009/04/24 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
内容编辑个人求职信
2013/12/10 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
《学棋》教后反思
2014/04/14 职场文书
食品安全标语
2014/06/07 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
研究生导师推荐信
2015/03/25 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
冰雪公主观后感
2015/06/16 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Python中的变量与常量
2021/11/11 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js