Javascript Google闭包编译器警告在let声明中JSC_常量_重新分配_值_错误
我正在使用Google闭包编译器缩小以下代码: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
{
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
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期公开发行中找不到这篇文章。)可能会在那时提交。谢谢你的评论!似乎有一个发丝错误。请提出一个问题。