惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - vboy

jQuery1.3.2 升级到 1.4.4 - vboy 过去的2010 2010北京马拉松 十年 2009北京国际马拉松,不一样的马拉松 2008.10.19日,马拉松胜利完成! 2008北京马拉松,我来了! 通过xmlhttp传送XML格式数据(VB.net) 春思 跑步三个月总结(2007-01-16) 观《垂直极限(Vertical Limit)》有感 与阿尔班鹰一起重生 展望2007 回顾2006 观《当幸福来敲门》有感 健身长跑好处多(转载) 跑步两个月总结(2006-12-16) 俞敏洪:和青年学生分享五句话[转自新东方] 坚持就是胜利--看《我为肥狂》有感
使用eval导致Google Closure Compiler压缩代码后运行出错的解...
vboy · 2009-12-09 · via 博客园 - vboy

最近在搞一些javascript的东西,由于系统完全是基于配置文件的,所以一些javascript的函数名或者函数代码直接写在了配置文件当中。

    //配置好的方法名
    var funcName="func1";
    
//写好的方法
    function func1(s){
        alert(s);
    }

也可能是配置为:

    var funcName="function(s){alert(s);}";

在调用的地方

    var str="Hello!";
    eval(
"("+funcName+")(str)");

正常调用没有问题,如果使用Compiler压缩后,因为str变量已经被改名,所以eval会出错。

改用:

    //var f=eval("(" + funcName + ")");
    var f=eval("(function() {return (" + funcName + ");})()");
    f.call(
this,str);

解决问题。

在chrome/firefox/opera下,直接用 eval("(" + funcName + ")") 可返回function对象,而IE下会返回 undefined 。

用 eval("(function() {return (" + funcName + ");})()"); 解决兼容性问题。