Javascript объект является нулевым после возврата - PullRequest
1 голос
/ 08 апреля 2011

Так что я боролся с этим и поэтому пришел сюда за ответами. Я чувствую себя немного новичком в 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" является правильным объектом. Объект не клонируется при возврате? «Рет» теряется и исчезает за пределами функции? Я не понимаю.

Спасибо за вашу помощь. :)

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

Я полагаю, что если показанное a () не вернет правильный ответ, должен быть другой a (), который вызывается вместо.

Итак, проблема в том, что в коде есть два a (), одно с правильным определением, а второе вы нам не показываете.

0 голосов
/ 08 апреля 2011

Помните, что в JavaScript переменным не нужно определять ключевое слово var.

Это означает, что со строкой

ret = someOtherObject;
  1. Сначала вы определяетепеременная someOtherObject, которая по умолчанию установлена ​​на null.
  2. Затем вы присваиваете someOtherObject для ret (оценка справа налево)

Следовательно, ret становится null.

0 голосов
/ 08 апреля 2011

JavaScript является асинхронным, поэтому, если выполнение функции a () занимает некоторое время, переменная c по-прежнему равна нулю, если вызов вызывается до того, как a () вернет что-то.Это можно исправить с помощью обратных вызовов, т.е.оберните код предупреждения в функцию и вызовите его из ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...