Javascript数组未定义

时间:2014-02-06 10:26:17

标签: javascript arrays scope

我有一个javascript函数,可以为数组赋值:

var myArray = [];
myArray =  myFunction();
next Statement;

当我到达下一个Statement时,如果我注释掉

,则数组未定义
myArray = myFunction(); 

数组仍在下一个Statement中定义。

请有人解释一下发生了什么。

2 个答案:

答案 0 :(得分:2)

var myArray = [];

您声明myArray并为其分配一个新的空数组对象。

myArray =  myFunction();

您可以将myFunction的来电回复值分配给myArray

这会覆盖以前的值。

您尚未向我们展示myFunction的代码,但可能会返回undefined(因为它有一个带有未定义值的return语句,或者它没有{{ 1}}声明。

最初在第1行创建的数组不再有任何引用,因此数组会被垃圾收集。


  

我有一个javascript函数,可以为数组赋值

如果要将值分配给数组,则需要指定要为其分配值的数组的索引:

return

或使用push之类的内容将其添加到最后。

myArray[0] = myFunction();

您可能希望myArray.push(myFunction()); 返回myFunction以外的其他内容。


undefined的实现可能会直接修改数组,例如......

myFunction

...在这种情况下,如果您刚刚删除了返回值分配给先前引用该数组的变量的部分,那么您的原始代码将起作用:

function myFunction () {
    myArray.push(1);
}

答案 1 :(得分:0)

这是因为你没有在函数内部返回任何值,所以默认情况下它不会返回任何值,因此会使你的数组​​未定义。

如果要为myArray指定一个完整的数组,请在函数中返回该数组。

或者如果您只想在函数中向myArray添加元素,请使用push()方法,例如: myArray.push(元件);