返回后Javascript对象为null

时间:2011-04-08 10:03:46

标签: javascript function null return

所以我一直在努力,所以我来到这里寻求答案。我觉得这个问题有点像一个JavaScript新手,但现在就这样了。

我有以下代码:

function a() {
    var ret = {};
    //random stuff that get some other object
    ret = someOtherObject;
    alert(ret);
    return ret;
}

var c = a();
alert(c);

问题是“c”为空,但“ret”是正确的对象。对象是否未在克隆时返回? “ret”会丢失并在功能之外消失吗?我不明白。

感谢您的帮助。 :)

4 个答案:

答案 0 :(得分:2)

我想如果a()显示没有返回正确的答案,那么应该有另一个a()代替。

所以问题是代码中有两个a(),一个是正确的定义,第二个是你没有告诉我们的。

答案 1 :(得分:0)

我遇到了类似的问题。对我来说,问题是我有

var i;
if (condition) {
    i = 1
}
return i

i对我来说总是空的,即使条件为真。更改为顶部的var i = null;可以解决我的问题

答案 2 :(得分:-1)

JavaScript是异步的,因此如果运行函数a()需要一些时间,如果在()返回某些内容之前调用alert,则变量c仍为null。这可以通过回调修复,即。在函数中包含alert-code并从()中调用它。

答案 3 :(得分:-1)

请注意,在JavaScript中,变量不需要定义var关键字。

这意味着行

ret = someOtherObject;
  1. 您首先定义一个默认设置为someOtherObject的变量null
  2. 然后,您将someOtherObject分配给ret(从右到左评估)
  3. 因此,ret变为null