我有一个javascript函数,可以为数组赋值:
var myArray = [];
myArray = myFunction();
next Statement;
当我到达下一个Statement时,如果我注释掉
,则数组未定义myArray = myFunction();
数组仍在下一个Statement中定义。
请有人解释一下发生了什么。
答案 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(元件);