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 相关文章推荐
jQuery 第二课 操作包装集元素代码
Mar 14 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
JQuery触发事件例如click
Sep 11 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
详解Vue取消eslint语法限制
Aug 04 Javascript
json前后端数据交互相关代码
Sep 19 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
BootStrap modal实现拖拽功能
Dec 01 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
vue 实现一个简单的全局调用弹窗案例
Sep 10 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
分厂厂长岗位职责
2013/12/29 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
企业员工培训感言
2014/02/26 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
初中生期末评语大全
2014/04/24 职场文书
2014年党课学习材料
2014/05/11 职场文书
授权委托书格式
2014/07/31 职场文书
英文感谢信范文
2015/01/21 职场文书
美丽心灵观后感
2015/06/01 职场文书
教师继续教育反思周记
2015/06/25 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
基于redis+lua进行限流的方法
2022/07/23 Redis