Uglify нарушая прогрессивное создание вложенных объектов

Я постепенно создаю вложенные объекты. Исходный код работает, а код Uglified - нет.

Рабочий оригинальный код

function(type, id, fieldName) {
  if (!this.model.proposed_changes)
    this.model.proposed_changes = {};
  if (!this.model.proposed_changes[type])
    this.model.proposed_changes[type] = {};
  if (!this.model.proposed_changes[type][id])
    this.model.proposed_changes[type][id] = {};
  if (fieldName) {
    this.model.proposed_changes[type][id][fieldName] = this.model.proposed_changes[type][id][fieldName] || {};
  }
}

Uglified Code (добавлены новые строки для удобства чтения)

function(e, i, n) {
  this.model.proposed_changes || (this.model.proposed_changes = {}),
    this.model.proposed_changes[e] || (this.model.proposed_changes[e] = {}),
    this.model.proposed_changes[e][i] || (this.model.proposed_changes[e][i] = {}),
    n && (this.model.proposed_changes[e][i][n] = this.model.proposed_changes[e][i][n] || {})
}

Это Uglified функция ошибок, когда this.model.proposed_changes является undefined поговорка Cannot read property <ID passed in> of undefined, Я не уверен, почему код Uglified не работает, но кажется, что назначения не выполняются последовательно, хотя они должны быть ( https://msdn.microsoft.com/en-us/library/9b37css7(v=vs.94).aspx)

Я использую gulp-uglify с другой конфигурацией, кроме сохранения тактов лицензий, хотя я пробовал это с mangle: false без эффекта.

Есть ли способ заставить uglify гарантировать, что назначения выполняются по порядку, если предположить, что это проблема?

Фон

В моем примере я гарантирую, что this.model существует, но не то, что у него есть подобъект с именем Project_changes. Этот шаблон продолжается до тех пор, пока у меня не будет this.model.proposed_changes[type][id][fieldName]. Если есть лучший способ сделать это, мне, безусловно, будет интересно.

1 ответ

Производственный сервер неправильно инициализировал this.model.proposed_changes для '{}' вместо {}, Как только эта ошибка была исправлена, код работал как ожидалось.

Другие вопросы по тегам