`
renzhen
  • 浏览: 250881 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

UglifyJS压缩的一个奇怪的bug及解决办法

阅读更多
   今天遇到一个很奇怪的问题,在开发测试没有问题的JS代码,放到服务器上chrome就报错,错误为‘ReferenceError: b is not defined’,初步断定是UglifyJS压缩有问题,我们将未压缩的代码放到服务器上,发现问题消失。
   接着就要查找原因了,将压缩的代码用netbeans打开,使用ALT+SHIFT+F格式化,找到了错误的地方,下面贴出错误压缩的源码和压缩后代码。
  
$.each(['keydown','keyup','change','focus','blur'],function(i,event){
				$input.bind(event+eventNamespace,function(e){
					if(!readyToOnBlur && (event == 'blur')) return false;
					$this._trigger('on'+event, e, null);
                                       //a
				});
			});
   

    压缩后
   
a.each(["keydown","keyup","change","focus","blur"],function(a,g){
		f.bind(g+d,function(a){
			return c||g!="blur"?(e._trigger("on"+g,a,null),b):!1
			})
		});

    比较代码可以看出,第一段代码a位置后面隐含了一个return undefined,第二段的b===undefined,于是我想这样我最后加一个return true,就可以破坏这个等式,问题就可以解决了,事实证明有效。
    不过后来又传出有类似的bug,都是‘ReferenceError: b is not defined’,难道要一个个改吗?还是改UglifyJS源码修正这个问题,似乎都不是简单的事,这令我左右为难啊,终于我灵光一闪,错误是ReferenceError,表示代码里找不到该变量,而这个变量b===undefined,既然如此,我何不创建一个。想到这层,解决方案就简单了。
    我在页面开始处加了一段如下代码:
<script>
var b;
</script>

     于是问题一劳永逸的解决了。
分享到:
评论
1 楼 litson 2013-10-09  
因为是全局的

相关推荐

    UglifyJS一个JavaScript解析器分解器压缩器或美化工具包

    **UglifyJS** 是一个强大的JavaScript工具集,主要用于处理JavaScript代码,包括解析、压缩和美化。这个工具在JavaScript开发领域扮演着重要角色,尤其是在优化前端代码以提高页面加载速度和减少网络传输的数据量时...

    STM32 cubemx HAL IIC 之BUG解决办法

    在使用STM32F103vct6开发硬件IIC的时候,用cubemx(版本4.20.0)生成的代码有重大bug,导致IIC通讯无论发送和接收都一直返回busy(返回值是2)。 究其原因是 stm32f1xx_hal_msp.c生成过程中出了问题,详细请参见附件...

    小程序遇到的奇怪bug.txt

    原生小程序开发过程中遇到的奇怪bug以及解决方案

    Bugfree无产品访问权限解决办法

    如果一个用户的默认角色不包含所需产品的访问权限,则会导致无法访问相应产品。 #### 2.2 产品未正确关联至用户 即使用户拥有适当的角色,但如果具体的产品没有正确地与该用户关联起来,仍然会出现访问限制。 ####...

    oracle常用的bug问题解决

    Oracle数据库的安全性是另一个重要的关注点。可能存在SQL注入、权限泄露等安全bug。解决这些问题,首先需要定期更新数据库到最新补丁集,确保已知安全漏洞得到修复。其次,应合理配置用户权限,避免过度授权,同时...

    微信小程序跳坑指南,存在的bug及解决方案(自制PPt)

    微信小程序入门介绍(自制PPt)。本人已开发2款小程序,公司分享会,需要介绍小程序。固出此ppt介绍小程序入门,及自己遇到的坑,和一些小门路,存在的bug及解决方案。

    易语言BUG及解决办法

    为了解决这个问题,可以改用`重定义数组`命令来增加一个数组成员,然后将这个新成员赋值。这种方法更加稳定,能够成功实现插件的插入功能。 总结来说,理解和解决易语言中的BUG需要对语言特性和内存操作有深入的...

    findbugs常见Bug以及处理办法

    findbugs常见Bug以及处理办法 1、BUG级别总结 2、处理方法 无需处理 建议处理 必须处理 常见BUG 安全代码,代码优化

    解决BugFree上传图片不能显示问题

    你可以考虑编写一个脚本自动更新已上传图片的链接,或者在BugFree的后台设置中寻找批量修改的选项。 - **避免端口冲突**:尽量选择非标准端口以避免与其他服务冲突,同时确保所有团队成员都知道这个新的端口号。 -...

    bugfreee一个bug管理系统jsp+mysql

    总的来说,Bugfree是一个实用的bug管理系统,它充分利用了JSP的动态网页能力和MySQL的数据管理优势,为软件开发团队提供了一个便捷的工具,以更好地追踪、管理和解决项目中的bug,从而提升整个项目的质量和效率。...

    bugfree,bug管理

    在软件开发中,bug是不可避免的,BugFree提供了一个高效的平台来记录、跟踪、修复这些问题,确保项目的顺利进行。 BugFree的主要功能包括: 1. **问题创建**:用户可以创建新的bug报告,包括详细描述bug的现象、...

    WIN10LTSC2021一键修复输入法BUG解决cpu占用高

    微软最新的WIN10 LTSC 2021终于出来了,基于WIN10 21H2版本...于是安装了原本体验了一下,发现了史上以来最大的BUG。在这里描述一下问题现象,和网上找来的解决方案总结,避免大家走弯路。解决WSAPPX进程占用CPU超高。

    vc6.0的一个bug及其解决策略

    c库函数中有个静态计数器,程序运行时间久了,会跳错,这篇文章专门针对这个问题,提出了可行的解决方案,本人就是用这个解决问题的

    bugfree2.0软件测试bug管理工具

    总的来说,BugFree 2.0 是一个实用的缺陷管理工具,尤其适合中小型企业或开源项目使用。通过有效的缺陷跟踪和团队协作,它能够帮助提升软件质量,优化开发流程。对于初次接触BugFree的用户,推荐先了解其基本概念和...

    Flash制作常见BUG及解决方法

    多年来遇到的一些Flash软件中的BUG,和对应的解决方法。适用于Animate软件。

    软件测试通过及BUG分级标准

    本文将详细阐述软件测试通过的标准以及BUG分级的相关知识点,旨在为软件测试人员提供一个清晰、准确的参考依据。 #### 一、软件测试通过标准 1. **功能完整度**:软件必须实现其设计文档中规定的全部功能,并且...

    软件测试Bug和bug生命周期中的各种状态

    2. Open(打开的):当一个 Bug 被指认为 New 之后,将其将给开发人员,开发人员将确认这是否是一个 Bug,如果是,开发组的负责人就将这个 Bug 指定给某位开发人员处理,并将 Bug 的状态设定为“Open”。 3. Fixed...

Global site tag (gtag.js) - Google Analytics