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 相关文章推荐
extjs 04_grid 单击事件新发现
Nov 27 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
Nov 19 Javascript
用javascript添加控件自定义属性解析
Nov 25 Javascript
javascript函数重载解决方案分享
Feb 19 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
vue+swiper实现左右滑动的测试题功能
Oct 30 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
自己整理的一个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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
Python 多线程的实例详解
2017/09/07 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
公司成立感言
2014/01/11 职场文书
美术专业个人自我评价
2014/01/18 职场文书
市场营销工作计划书
2014/05/06 职场文书
师范毕业生求职信
2014/07/11 职场文书
严以律己学习心得体会
2016/01/13 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python