我想使用一个变量作为数组中的索引参数,但由于某种原因,当我这样做时,它会变成“未定义”。有任何想法吗?在JavaScript中使用变量作为数组参数?
var object_number = [];
var x = 1;
function create_new_object()
{
object_number[x] = new happy_object();
x++;
}
我想使用一个变量作为数组中的索引参数,但由于某种原因,当我这样做时,它会变成“未定义”。有任何想法吗?在JavaScript中使用变量作为数组参数?
var object_number = [];
var x = 1;
function create_new_object()
{
object_number[x] = new happy_object();
x++;
}
数组的下标在JavaScript从零开始。当x
开始于1
时,在阵列的第一个位置有一个undefined
元素。改为从x=0
开始。
但是,有一个更好的方法可以做到这一点。而不是手动跟踪列表中的最后一个元素,您可以使用Array.push()
将新元素添加到结尾。
var object_number = [];
function create_new_object()
{
object_number.push(new happy_object());
}
当你想找出有多少元素的数组中,使用Array.length
(或Array.push()
返回的数字)。
进一步的参考文献:Array @ MDC。
您的object_number是一个没有元素的空数组。因此你得到这个错误。 要将元素添加到数组中,您需要使用push方法。
object_number.push(new happy_object());
还需要从0而不是1开始你的数组索引即你x
应该是0
除了以前的答案:
不同于“正常”的语言(其使用块范围),JavaScript使用函数作用域。 因此,当你像这样使用它时,你的功能范围就存在于你的功能范围内。
你不能乱用数组键在JS太多太多 - 如果你想要一个更坚实的,可定义的关系,你需要做模仿的关联数组:
var object_number = {};
var x = 1;
function create_new_object() {
object_number[x] = new happy_object();
}
另外,我'd结合你的var语句。使可变/功能提升更清晰。
var object_number = {}
, x = 1;
你真的调用了'create_new_object()'吗? – BoltClock 2011-03-23 17:52:15
你在访问'object_number [0]'吗?因为你正在设置'x = 1',所以如果你试图访问它,索引0将是不确定的。 – moe 2011-03-23 17:54:50
你确实定义了'happy_object'吗? (严重的是,这个简化的测试用例已经减少到不可能工作的程度,甚至没有一行代码可能会出现任何“未定义”的代码) – Quentin 2011-03-23 17:55:34