Uglifier 破坏了我的 js 吗?
Is Uglifier breaking my js?
我正在使用 rails,uglifier 并且刚刚开始使用 coffeescript。我用于处理 ajax 完成的咖啡脚本是:
handleAjaxComplete = (xhr, response, status) ->
myFeatherBox.close() if myFeatherBox?
if $(xhr.target).hasClass "crud_create"
#creation button hit
myFeatherBox = $.featherlight response.responseText, afterOpen: ->
$('form#frm_create').validate()
$('#frm_create input[type!=hidden]').first().focus()
return
else #etc.
这就变成了下面的javascript:
handleAjaxComplete = function(xhr, response, status) {
var new_aka_song_id;
if (myFeatherBox != null) {
myFeatherBox.close();
}
if ($(xhr.target).hasClass("crud_create")) {
myFeatherBox = $.featherlight(response.responseText, {
afterOpen: function() {
$('form#frm_create').validate();
$('#frm_create input[type!=hidden]').first().focus();
}
});
} else //etc.
但是当我打开托管页面(在 heroku 上)时,myFeatherBox.close()
似乎不是 运行。我查了一下丑化代码,好像变成了:
a=function(t,s) {
var o;
if(null!=h&&h.close(),$(t.target).hasClass("crud_create"))
h=$.featherlight(s.responseText,{
afterOpen:function(){
$("form#frm_create").validate(),
$("#frm_create input[type!=hidden]").first().focus()
}
});
else //etc.
(我在我认为无关紧要的地方添加了一些空格以使其更具可读性)。
我担心的是丑化代码第三行的情况。我是否正确认为这破坏了我想要做的事情?如果是这样,我该如何修复我的咖啡脚本,使丑化器发挥作用?
a, b
在此上下文中,是一个表达式,其值是 b
的值(请参阅 the comma operator)。
这就是为什么丑化测试
if(null!=h&&h.close(),$(t.target).hasClass("crud_create"))
与
相同
null!=h && h.close();
if ($(t.target).hasClass("crud_create"))
由于 the short-circuit behavior of &&
,相当于
if (null!=h) h.close();
if ($(t.target).hasClass("crud_create"))
所以这个丑化好像没有什么问题
我正在使用 rails,uglifier 并且刚刚开始使用 coffeescript。我用于处理 ajax 完成的咖啡脚本是:
handleAjaxComplete = (xhr, response, status) ->
myFeatherBox.close() if myFeatherBox?
if $(xhr.target).hasClass "crud_create"
#creation button hit
myFeatherBox = $.featherlight response.responseText, afterOpen: ->
$('form#frm_create').validate()
$('#frm_create input[type!=hidden]').first().focus()
return
else #etc.
这就变成了下面的javascript:
handleAjaxComplete = function(xhr, response, status) {
var new_aka_song_id;
if (myFeatherBox != null) {
myFeatherBox.close();
}
if ($(xhr.target).hasClass("crud_create")) {
myFeatherBox = $.featherlight(response.responseText, {
afterOpen: function() {
$('form#frm_create').validate();
$('#frm_create input[type!=hidden]').first().focus();
}
});
} else //etc.
但是当我打开托管页面(在 heroku 上)时,myFeatherBox.close()
似乎不是 运行。我查了一下丑化代码,好像变成了:
a=function(t,s) {
var o;
if(null!=h&&h.close(),$(t.target).hasClass("crud_create"))
h=$.featherlight(s.responseText,{
afterOpen:function(){
$("form#frm_create").validate(),
$("#frm_create input[type!=hidden]").first().focus()
}
});
else //etc.
(我在我认为无关紧要的地方添加了一些空格以使其更具可读性)。
我担心的是丑化代码第三行的情况。我是否正确认为这破坏了我想要做的事情?如果是这样,我该如何修复我的咖啡脚本,使丑化器发挥作用?
a, b
在此上下文中,是一个表达式,其值是 b
的值(请参阅 the comma operator)。
这就是为什么丑化测试
if(null!=h&&h.close(),$(t.target).hasClass("crud_create"))
与
相同null!=h && h.close();
if ($(t.target).hasClass("crud_create"))
由于 the short-circuit behavior of &&
,相当于
if (null!=h) h.close();
if ($(t.target).hasClass("crud_create"))
所以这个丑化好像没有什么问题