Google Closure Compiler предупреждает с JSC_CONSTANT_REASSIGNED_VALUE_ERROR о декларациях let - PullRequest
0 голосов
/ 01 июня 2018

Я использую Google Closure Compiler для минимизации следующего кода:

{
  let x = 10,
      y = 20;
  console.log(y);
}

{
  let x = 30,
      y = 40;
  console.log(y);
}

(см. Также эту ссылку на веб-приложение Closure Compiler.)

Необъяснимо для меня, компилятор выдает следующее предупреждение:

JSC_CONSTANT_REASSIGNED_VALUE_ERROR: constant y assigned a value more than once.
Original definition at Input_0:4 at line 10 character 6
      y = 40;
      ^

Это вызывает несколько вопросов:

  • Что-нибудь в этих объявлениях let недопустимо?
  • Объявления упакованы в свои блоки.Поэтому они должны быть независимы друг от друга.Правильно?
  • Почему оно дает мне это предупреждение?
  • Почему предупреждение дается только для y, а не для x?
  • Почему оно относится кy как "константа"?Я никогда не объявлял константу где-либо в этом фрагменте.

Это код вывода в синтаксисе ES5:

var x=10,y=20;console.log(y);var x$0=30;y=40;console.log(y);

Действительно, Google Closure Compiler повторно использует переменную y изпервый блокЭто не делает это для x, однако.

Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 13 сентября 2018

Эта проблема была исправлена ​​с помощью https://github.com/google/closure-compiler/commit/b3146ab187540c5bdf3b24f8ebf6ddede7fd63c5

Она больше не воспроизводится в текущем выпуске (или веб-сервисе).

...