Javascript 新关键字 .length 无效
Javascript new keyword .length not working
希望有人能阐明这段没有按预期工作的简单代码:
var arr = new Array(10);
arr.length; // 10. Why? Very wierd.
为什么 return 10?
您用十个元素实例化了数组
我制作了一个包含 10 个单元格的数组...所以它 returns 10 :)
您想做的事情:
var arr = [10]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
If the only argument passed to the Array constructor is an integer
between 0 and 232-1 (inclusive), this returns a new JavaScript array
with its length property set to that number
因此不可能使用new
关键字创建一个只有一个数字元素的新数组。
但是您可以这样做:
var arr = [10]; // Creates a new array with one element (the number 10)
console.log(arr.length); // displays 1 because the array contains one element.
它 returns 10,因为你只给数组构造函数一个整数作为参数。在这种情况下,新的 Array 构造函数就像某些编程语言一样,您需要在其中指定数组的内存,这样您就不会得到那些 ArrayIndexOutOfBounds 异常。
Java 中的一个示例:
int[] a = new int[10];
或 C#:
int[] array = new int[5];
在Java脚本中,当你写:
var a = new Array(10);
a[0] // returns undefined
a.length // returns 10.
如果你写:
a.toString() // returns ",,,,,,,,,", a comma for each element + 1
但是,由于 Java脚本不需要为数组分配内存,最好使用 [] 构造函数:
var a = [10];
a[0] //returns 10
a.length //returns 1
我认为让所有人困惑的是:
var a = new Array(1,2,3,4,5);
a[0] // returns 1
a.length // returns 5
不过你也可以这样做:
var a = [1,2,3,4,5];
a[0] // returns 1
a.length // returns 5
所以,总而言之,尽量避免使用新的Array构造函数,而是使用[]构造函数。
希望有人能阐明这段没有按预期工作的简单代码:
var arr = new Array(10);
arr.length; // 10. Why? Very wierd.
为什么 return 10?
您用十个元素实例化了数组
我制作了一个包含 10 个单元格的数组...所以它 returns 10 :)
您想做的事情:
var arr = [10]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
If the only argument passed to the Array constructor is an integer between 0 and 232-1 (inclusive), this returns a new JavaScript array with its length property set to that number
因此不可能使用new
关键字创建一个只有一个数字元素的新数组。
但是您可以这样做:
var arr = [10]; // Creates a new array with one element (the number 10)
console.log(arr.length); // displays 1 because the array contains one element.
它 returns 10,因为你只给数组构造函数一个整数作为参数。在这种情况下,新的 Array 构造函数就像某些编程语言一样,您需要在其中指定数组的内存,这样您就不会得到那些 ArrayIndexOutOfBounds 异常。 Java 中的一个示例:
int[] a = new int[10];
或 C#:
int[] array = new int[5];
在Java脚本中,当你写:
var a = new Array(10);
a[0] // returns undefined
a.length // returns 10.
如果你写:
a.toString() // returns ",,,,,,,,,", a comma for each element + 1
但是,由于 Java脚本不需要为数组分配内存,最好使用 [] 构造函数:
var a = [10];
a[0] //returns 10
a.length //returns 1
我认为让所有人困惑的是:
var a = new Array(1,2,3,4,5);
a[0] // returns 1
a.length // returns 5
不过你也可以这样做:
var a = [1,2,3,4,5];
a[0] // returns 1
a.length // returns 5
所以,总而言之,尽量避免使用新的Array构造函数,而是使用[]构造函数。