Javascript:虽然变量是在全局范围内声明的,但它在函数内部仍未定义

时间:2016-10-09 07:50:26

标签: javascript

虽然我在没有starttime关键字的情况下定义var变量,因此将其设为全局,但在控制台中记录starttime会给undefined

 starttime = new Date();

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

如何访问函数内的starttime变量?

2 个答案:

答案 0 :(得分:3)

您可以尝试以下方法:

starttime = new Date();

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

现在您可以访问全局声明的变量starttime。在您的代码中,您正在访问未定义的变量。为什么?你的函数有一个你从未传递给它的参数。所以它的价值是未定义的。

答案 1 :(得分:2)

您有两个名为starttime的变量。

一个全球性的,在这里隐含声明:

starttime = new Date();

和一个当地人,在这里宣布:

function(starttime){

由于您不使用本地版本,最好的方法是删除该声明

setInterval(function(){

或者,明确访问全局:

getTimeElapsed(window.starttime);