我刚刚玩JavaScript并且遇到了一个简单的程序.
我用JavaScript声明了一个数组
var a = [0, 1, 2];
Run Code Online (Sandbox Code Playgroud)
然后由于JavaScript中的数组没有固定的大小,我们可以向数组中添加更多,我向数组添加了另一个整数.
a[3] = 3;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,如果我试图访问,a[4]我肯定会得到它undefined.
现在,如果我拿一个数组
var a = [0,1,2];
Run Code Online (Sandbox Code Playgroud)
并添加另一个元素
a[4] = 4;
Run Code Online (Sandbox Code Playgroud)
我故意没有定义a[3],而这也给了我a[3]作为undefined.
这是一个可以观察到的小提琴:http://jsfiddle.net/ZUrvM/
现在,如果我在Java中尝试相同的事情,
int[] a = new int[4];
a[0] = 0;
a[1] = 1;
a[3] = 3;
Run Code Online (Sandbox Code Playgroud)
然后我结束了
a[2] = 0;
Run Code Online (Sandbox Code Playgroud)
你可以在ideone上看到这个:https://ideone.com/WKn6Rf
我发现Java的原因是在声明数组时定义了四个变量,我们只能为声明的数组大小赋值.但是在JavaScript中,当我声明一个大小为3的数组然后添加第5个元素时,为什么它不考虑第4个元素,null或者0我们是否将数组大小增加到4以上?
为什么我在JavaScript中看到这种奇怪的行为,而在其他语言中却看不到?