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 DIV弹出效果实现代码
Jul 03 Javascript
jquery 页面全选框实践代码
Apr 02 Javascript
JS实现图片预加载无需等待
Dec 21 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
浅析JavaScript声明变量
Dec 21 Javascript
全面解析Bootstrap表单样式的使用
Sep 09 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
js get和post请求实现代码解析
Feb 06 Javascript
js实现磁性吸附的示例
Oct 26 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
js option删除代码集合
2008/11/12 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
自我评价范文
2013/12/22 职场文书
签约仪式策划方案
2014/06/02 职场文书
文员求职信
2014/07/15 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
法定代表人资格证明书
2015/06/18 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书