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 相关文章推荐
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
Mar 25 Javascript
基于jQuery的计算文本框字数的代码
Jun 06 Javascript
JS图片无缝滚动(简单利于使用)
Jun 17 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
Jul 07 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
May 02 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
Jan 18 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 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
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP简单遍历对象示例
2016/09/28 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
python根据路径导入模块的方法
2014/09/30 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
用python解压分析jar包实例
2020/01/16 Python
Python实现自动访问网页的例子
2020/02/21 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
演讲稿祖国在我心中
2014/05/04 职场文书
捐助倡议书
2015/01/19 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
python如何正确使用yield
2021/05/21 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
mysql sql常用语句大全
2022/06/21 MySQL