#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:
Итак, что я вижу в первую очередь, это две вещи.
- SetBadge никогда не вызывается в этом фрагменте вне себя, что приводит к бесконечной рекурсии и
2 внутри вы переходите res
к setBadge, который на самом деле не определен.
Комментарии:
1. Попытка передать res должна выдать ошибку ссылки, поскольку она не определена или не инициализирована в опубликованном коде (хотя, возможно, она есть в другом месте).