我有以下 javascript 在调试中运行良好,但由于不正确的缩小而在生产中失败:
function buildNotification(config) {
var notificationWrapper = $('<div>', {
'id': _.uniqueId('notification_'),
'class': 'notificationWrapper'
});
var notification = $('<div>', {
'class': 'notification ui-widget ui-state-default'
});
notification.addClass(config.notificationClass);
notification.appendTo(notificationWrapper);
var notificationList = $('<ul/>', {
'class': 'notificationList'
}).appendTo(notification);
// THIS CODE IS IMPROPERLY MINIFIED:
$.each(config.messages, function() {
$('<li/>', {
html: this
}).appendTo(notificationList);
});
return notificationWrapper;
}
Cuplrit 是我根据配置设置列表项的 HTML 标记的地方。
缩小后的标记如下所示:
function g(a) {
var b = $("<div>", { id: _.uniqueId("notification_"), "class": "notificationWrapper" }), c = $("<div>", { "class": "notification ui-widget ui-state-default" });
c.addClass(a.notificationClass);
c.appendTo(b);
var d = $("<ul/>", { "class": "notificationList" }).appendTo(c);
$.each(a.messages, function() { $("<li/>", { html: this }).appendTo(d); });
return b;
}
这是我收到的错误消息:
有人可以告诉我一些知识吗?我在做一些不好的做法吗?我通过 JSHint 运行代码,没有任何抱怨,而且文件顶部还有“use strict”。
更新:我在使用 Google Closure 进行缩小时遇到了同样的问题。它生成的代码是:
function g(a) {
var b = $("<div>", { id: _.uniqueId("notification_"), "class": "notificationWrapper" }), c = $("<div>", { "class": "notification ui-widget ui-state-default" });
c.addClass(a.notificationClass);
c.appendTo(b);
var d = $("<ul/>", { "class": "notificationList" }).appendTo(c);
$.each(a.messages, function() { $("<li/>", { html: this }).appendTo(d); });
return b;
}
这与 YUI Compressor 相同。
更新 2: http: //jscompress.com/如果我使用这个软件压缩我的文件,它可以工作。
生成的代码:
function r(e) {
var t = $("<div>", { id: _.uniqueId("notification_"), "class": "notificationWrapper" });
var n = $("<div>", { "class": "notification ui-widget ui-state-default" });
n.addClass(e.notificationClass);
n.appendTo(t);
var i = $("<ul/>", { "class": "notificationList" }).appendTo(n);
$.each(e.messages, function() { $("<li/>", { html: this }).appendTo(i); });
return t;
}