Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google闭包编译器警告在let声明中JSC_常量_重新分配_值_错误_Javascript_Ecmascript 6_Google Closure Compiler - Fatal编程技术网

Javascript Google闭包编译器警告在let声明中JSC_常量_重新分配_值_错误

Javascript Google闭包编译器警告在let声明中JSC_常量_重新分配_值_错误,javascript,ecmascript-6,google-closure-compiler,Javascript,Ecmascript 6,Google Closure Compiler,我正在使用Google闭包编译器缩小以下代码: { let x = 10, y = 20; console.log(y); } { let x = 30, y = 40; console.log(y); } (另请参见闭包编译器web应用。) 令我费解的是,编译器给出了以下警告: JSC_CONSTANT_REASSIGNED_VALUE_ERROR: constant y assigned a value more than once. Origin

我正在使用Google闭包编译器缩小以下代码:

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

{
  let x = 30,
      y = 40;
  console.log(y);
}
(另请参见闭包编译器web应用。)

令我费解的是,编译器给出了以下警告:

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闭包编译器重用了第一个块中的
y
变量。但是,对于
x
,它不会这样做

你知道这是怎么回事吗?

这个问题已经解决了


它在当前版本(或webservice)中不再可复制

如果你做
让x=10;设y=20
设x=30;设y=40
编译器似乎将
y
视为一个全局变量,因为它没有自己的
let
命令,如果,这可能是一个错误。您没有做错任何事情。它不局限于普通块-循环的
也存在同样的行为。这是编译器的问题。如果我给
y
它自己的
let
命令,它就会工作@这是一个已知的bug吗?(我在GitHub上的~800期公开发行中找不到这篇文章。)可能会在那时提交。谢谢你的评论!似乎有一个发丝错误。请提出一个问题。