我有以下 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;
}