Вытащить переменную из функции Javascript
Не получается вытащить значение переменной из функции, всё время выводится ошибка Uncaught ReferenceError: devuuid_raw is not defined Задача такая: нужно вывести значение переменной за пределы функции, т.к далее значение переменной будет посылаться через другую функцию на сервер. Код:
document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() < console.log("Device is ready"); var element = document.getElementById('devProps'); devuuid_raw = device.uuid; return devuuid_raw; element.innerHTML = 'Идентификатор устройства: ' + device.uuid + '
'; > var devuuid = devuuid_raw;
Отслеживать
задан 13 апр 2014 в 14:00
red_sensor red_sensor
25 2 2 серебряных знака 7 7 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вы абсолютно не понимаете, как работает JavaScript. Рекомендую почитать «Книгу с носорогом». Три грубейшие ошибки:
- Код после инструкции return (он не выполнится)
- Объявление переменной без ключевого слова var
- Непонимание того, что на момент выполнения этой строки: var devuuid = devuuid_raw;
onDeviceReady еще не сработал.
Отслеживать
ответ дан 13 апр 2014 в 14:24
2,391 2 2 золотых знака 18 18 серебряных знаков 23 23 бронзовых знака
Спасибо за ответ, return я изначально не ставил, так посоветовали сделать на другом форме, что для меня тоже показалось странным, переменную без var я объявил глобально, в надежде что она будет видна за пределами функции, но увы она не видна. Насчет «onDeviceReady еще не сработал.» не понимаю, а когда он сработает? Нужно ли объявить переменную по-другому?
13 апр 2014 в 14:35
он сработает в функции onDeviceReady() , вы можете вызвать из нее другую. это называется асинхронное выполнение. для понимания медитируйте на вот такой код: var a=0; setTimeout(setA,1000); //одноразовое событие таймера, через 1с function setA() < a=1; >console.log(a); //0
13 апр 2014 в 14:43
Спасибо, это немного проясняет ситуацию. Моя ситуация похожа на ваш пример, но мне как раз нужно чтобы вывелось 1, если исходить из вашего примера
13 апр 2014 в 15:59
так var a=0; setTimeout(setA,1000); //одноразовое событие таймера, через 1с function setA() < a=1; showA(); >function showA() < console.log(a); //1 >
13 апр 2014 в 16:22
подобный вариант пробовал, в том то и дело нужно обойтись без второй функции, а сделать как у вас здесь: var a=0; setTimeout(setA,1000); //одноразовое событие таймера, через 1с function setA() < a=1; >console.log(a); //0 только чтобы в итоге вывелось 1 т.е чтобы в итоге переменная а была по за функцией и была равна 1 (какое значение ей было задано в функции, такое же должно быть в этой переменной и вне функции)
Как достать переменную из функции?
Привет. Если я создаю функцию function qwe(), то как можно достать переменную x? Когда функция отрабатывает (если брэйкпоинт поставить), то можно достать — написать в консоли x; При этом, если я пишу window,x; — будет уже undefined, хотя записи x; и window,x; значат одно и то же.
Что такое execution context?Напишите, пожалуйста, своими словами — как сами понимаете. как execution context соотносится со scope (областью видимости)? это разные вещи или нет?
- Вопрос задан более трёх лет назад
- 2893 просмотра
как вернуть значение из функции js
Чтобы вернуть некое значение из функции используется ключевое слово return . В качестве значения может быть что угодно, в зависимости от цели и задачи для этой функции.
Пример ниже показывает функцию, которая возвращает значения типа boolean . Такие функции называются предикатами.
function isHero(person) return person.name === 'Harry Potter'; > const person = 'Huge Plotter'; isHero(person); // false
Курсы javascript
HackerSniper, что должен был проиллюстрировать твой пример?
20.10.2011, 22:28
Регистрация: 17.10.2011
Сообщений: 53
получить переменную из функции
20.10.2011, 22:35
Регистрация: 19.08.2010
Сообщений: 14,092
HackerSniper, CACA и caca — разные переменные. И функции так не пишут.
Например CACA можно вернуть из функции.
function TACA() < var CACA='Ok'; return CACA; >caca=TACA() alert(caca)