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 相关文章推荐
js表格分页实现代码
Sep 18 Javascript
Jquery实现无刷新DropDownList联动实现代码
Mar 08 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
详解JavaScript ES6中的Generator
Jul 28 Javascript
seajs学习之模块的依赖加载及模块API的导出
Oct 20 Javascript
js 轮播效果实例分享
Dec 28 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
解决Vue动态加载本地图片问题
Oct 09 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
一个基于PDO的数据库操作类
2011/03/24 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
在Django的session中使用User对象的方法
2015/07/23 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
大学毕业生简单自荐信
2013/11/05 职场文书
超市端午节活动方案
2014/01/23 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
教师先进个人材料
2014/12/17 职场文书