Проблема с областью действия переменной Javascript вложенные функции

#javascript #variables #scope

#javascript #переменные #область видимости

Вопрос:

Хорошо, итак, я почти новичок в Javascript, и я пересматриваю расширение для друга.

Моя проблема в том, что мой chrome.browserAction.getTitle получает правильные данные, но функция не передает результат основной функции, отображаясь как «неопределенный» в функции с именем «setBadge».

 function setBadge(status,s) {
    chrome.browserAction.getTitle({}, function(result){
        console.log(result)
        setBadge(res)
    });

    console.log(s);
    chrome.browserAction.setTitle({title:("is "   status)});

    if (status == "Online" amp;amp; result == "is Offline") {
        showOn();
        audioNotification();
        chrome.browserAction.setBadgeText({text:("On"   "            ")});
        chrome.browserAction.setBadgeBackgroundColor({color:([0,255,0,255])});
    }

    if (status == "Offline" amp;amp; result == "is Online") {
        showOff();
        audioNotification();
        chrome.browserAction.setBadgeText({text:("Off"   "            ")});
        chrome.browserAction.setBadgeBackgroundColor({color:([255,0,0,100])});
    }
}
 

Любая помощь приветствуется.

Комментарии:

1. Вы setBadge() вызываете setBadge() только один аргумент (который есть undefined ) и вызываете его снова и снова и снова. Ни одна из этих ситуаций не кажется правильной.

2. Вы не показываете, как вызывается опубликованный код или где инициализируется или объявляется res .

Ответ №1:

Итак, что я вижу в первую очередь, это две вещи.

  1. SetBadge никогда не вызывается в этом фрагменте вне себя, что приводит к бесконечной рекурсии и

2 внутри вы переходите res к setBadge, который на самом деле не определен.

Комментарии:

1. Попытка передать res должна выдать ошибку ссылки, поскольку она не определена или не инициализирована в опубликованном коде (хотя, возможно, она есть в другом месте).