Javascript 为什么可以';我不能在Java中声明同一个变量两次吗?
这里也有类似的问题,但它们并没有真正回答我的问题 所以我很好奇为什么我们不能在Java中声明同一个变量两次 例如:Javascript 为什么可以';我不能在Java中声明同一个变量两次吗?,javascript,java,Javascript,Java,这里也有类似的问题,但它们并没有真正回答我的问题 所以我很好奇为什么我们不能在Java中声明同一个变量两次 例如: int a = 4; int a = 6; 这在Java中是行不通的 但是,在javascript中,这实际上是可行的: var a = 1; var a = 2; 在javascript中,人们说声明立即移到了开头,所以它变成了这样: var a; a = 1; a = 2; 如果作用域不重叠,您可以使用相同的变量名,例如,我可以在一个名为“var1”的私有方法中使
int a = 4;
int a = 6;
这在Java中是行不通的
但是,在javascript中,这实际上是可行的:
var a = 1;
var a = 2;
在javascript中,人们说声明立即移到了开头,所以它变成了这样:
var a;
a = 1;
a = 2;
如果作用域不重叠,您可以使用相同的变量名,例如,我可以在一个名为“var1”的私有方法中使用一个变量,然后在另一个方法中使用相同的变量名,这两个变量不会冲突
但是,由于每次我在同一作用域中使用“int var1”,java都会重新声明变量,因此它不允许这样做,因为它是一个冲突的变量名,而在java脚本中,声明只发生一次,因为它是弱类型的如果作用域不重叠,您可以使用相同的变量名,例如,我可以在一个名为“var1”的私有方法中使用一个变量,然后在另一个方法中使用相同的变量,这两个变量不会冲突
然而,由于每次我在同一个范围内使用“int var1”,java都会重新声明变量,它不允许这样做,因为它是一个冲突的变量名,而在java脚本中,声明只发生一次,因为它是弱类型的,简单而明显的答案是,编译器不允许这样做。但现在让我们更进一步——为什么需要这样做 这里的原因是,两次声明变量是错误的标志。它通常意味着三件事之一:
int-length
,它会对你咆哮。在复制数组或其他内容时,您可能应该使名称更具体地表示其长度,例如int originalLength
和int extendedLength
现在,这是否意味着在某些情况下这可能是好事?当然可能有。也许您已经涵盖了所有的基础,并且您绝对确定重用该变量是可以的。在这种情况下,只需重新分配它,而不是重新定义它。就个人而言,我建议不要这样做,但如果你想开枪,那是你的脚。:) 简单而明显的答案是,编译器不允许您这样做。但现在让我们更进一步——为什么需要这样做 这里的原因是,两次声明变量是错误的标志。它通常意味着三件事之一:
int-length
,它会对你咆哮。在复制数组或其他内容时,您可能应该使名称更具体地表示其长度,例如int originalLength
和int extendedLength
现在,这是否意味着在某些情况下这可能是好事?当然可能有。也许您已经涵盖了所有的基础,并且您绝对确定重用该变量是可以的。在这种情况下,只需重新分配它,而不是重新定义它。就个人而言,我建议不要这样做,但如果你想开枪,那是你的脚。:) 现在,它已经在javascript中用新的let关键字进行了修正或临时修改 如果尝试多次初始化同一变量名,将抛出错误
let a = 4;
let a = 5;
将在ES6中抛出一个错误,现在它已经在javascript中用新的let关键字进行了更正或临时修改 如果尝试多次初始化同一变量名,将抛出错误
let a = 4;
let a = 5;
将在ES6中抛出错误,而不是否决表决,但这是一个主观问题。这正是java创建者决定编写java编译器和语言语法的方式。谢谢!我想是有点subjective@aguibert主观问题并不一定就是坏问题。不是否决票,但这是一个主观问题。这正是java创建者决定编写java编译器和语言语法的方式。谢谢!我想是有点subjective@aguibert主观问题并不一定就是坏问题。