2016-10-09 2 views
1

В то время как я определяю переменную starttime без var ключевого слова таким образом, что делает его глобальным, Протоколирование starttime в консоли дает undefined.Javascript: В то время как переменная объявлена ​​в глобальной области видимости, она остается неопределенной внутри функции

starttime = new Date(); 

setInterval(function(starttime){ 
    getTimeElapsed(starttime); 
}, 1000); 

Как я могу получить доступ к переменной starttime внутри функции?

+2

Не отвергая его аргументов функции будет отталкиваться, я думаю. – Tomalak

+1

Определение в сигнатуре функции означает, что тайм-аут вызывает функцию, он установит 'starttime' неопределенным в этой области. Удалите имя переменной из сигнатуры функции. – rockerest

ответ

2

У вас есть две переменные: starttime.

один глобальный, неявно объявляется здесь:

starttime = new Date(); 

и один местный, заявил здесь:

function(starttime){ 

Поскольку вы не используете локальную версию, наилучшим подходом является удалить эту декларацию.

setInterval(function(){ 

Кроме того, доступ к глобальным явно:

getTimeElapsed(window.starttime); 
3

Вы можете попробовать следующее:

starttime = new Date(); 

setInterval(function(){ 
    getTimeElapsed(starttime); 
}, 1000); 

Теперь доступ к глобальному объявленным переменной starttime. В вашем коде вы получали доступ к неопределенной переменной. Зачем? У вас есть один аргумент, который вы никогда не передавали. Так что это значение не определено.

Смежные вопросы