这里有类似的问题,但他们并没有真正回答我的问题。
所以我很好奇为什么我们不能在Java中声明两次相同的变量?
例如:
int a = 4;
int a = 6;
这在Java中确实起作用。
然而,在javascript中,这实际上有效:
var a = 1;
var a = 2;
在javascript中,人们说声明立刻被移到了开头,所以它变成了这样:
var a;
a = 1;
a = 2;
答案 0 :(得分:3)
简单明了的答案是因为编译器不允许你这样做。但现在让我们更进一步 - 为什么会这样呢?
这里的原因是两次声明变量是错误的标志。它通常意味着三件事之一:
int length
,它会咆哮你。您可能应该使您的名称更加具体到它的长度,例如复制数组时的int originalLength
和int extendedLength
。每一个都是一个主要的代码气味,可能是路上的虫子的来源。 (并且在不远的路上!)在每种情况下,允许你两次声明一个变量会导致模糊,如果它阻止你编译就会被阻止。
现在,这是否意味着它可能不是很好的情况?当然。可能有。也许你已经涵盖了所有的基础,你绝对相信重用那个变量是可以的。在这种情况下,只需重新分配它而不是重新声明它。就我个人而言,我建议不要这样做,但如果你愿意的话,那就是你的脚。 :)
答案 1 :(得分:0)
如果范围不重叠,你可以使用相同的变量名,例如我可以在名为“var1”的私有方法中有一个变量,然后在另一个方法中有相同的东西,这两个不会冲突
然而,因为每次我在同一范围内使用“int var1”,java都会重新声明变量,它不会允许它,因为它是一个冲突的变量名,而在java脚本中,声明只发生一次,因为它是弱类型的
答案 2 :(得分:0)
现在它已经使用新的let关键字在javascript中进行了纠正或即兴创作 如果您尝试多次初始化相同的变量名称,则会抛出错误
let a = 4;
let a = 5;
将在ES6中抛出错误