#javascript
#javascript
Вопрос:
Хотя я определяю starttime
переменную без var
ключевого слова, делая ее глобальной, запись starttime
в консоль выдает undefined
.
starttime = new Date();
setInterval(function(starttime){
getTimeElapsed(starttime);
}, 1000);
Как я могу получить доступ к starttime
переменной внутри функции?
Комментарии:
1. Думаю, для начала было бы неплохо не переопределять ее в аргументах функции.
2. Определение в сигнатуре функции означает, что когда тайм-аут вызывает функцию, для нее устанавливается
starttime
значение undefined в этой области. Удалите имя переменной из подписи функции.
Ответ №1:
Вы можете попробовать следующее:
starttime = new Date();
setInterval(function(){
getTimeElapsed(starttime);
}, 1000);
Теперь вы получаете доступ к глобальной объявленной переменной starttime
. В то время как в вашем коде вы обращались к неопределенной переменной. Почему? У вашей функции был один аргумент, который вы никогда не передавали ей. Таким образом, ее значение не определено.
Ответ №2:
У вас есть две вызываемые переменные starttime
.
Один глобальный, неявно объявленный здесь:
starttime = new Date();
и одна локальная, объявленная здесь:
function(starttime){
Поскольку вы не используете локальную версию, лучший подход — удалить это объявление.
setInterval(function(){
В качестве альтернативы, обратитесь к глобальному явно:
getTimeElapsed(window.starttime);