在函数内部和外部定义变量的区别

Rob*_*ijk 1 javascript

这是javascript的新手.

Team Treehouse博客有一个关于如何在javascript中构建计时器的小教程.它基本上是以下代码:

<h1 id="timer">Loading</h1>

var updateMessage = function(){ 
  var date = Date();
  var message = document.getElementById("timer");
  message.innerHTML = "The time is " + date;
}

var timer = setInterval(updateMessage, 500);
Run Code Online (Sandbox Code Playgroud)

这很好用.但是我想date用于多种功能.我试过以下..

var date = Date();
var updateMessage = function(){ 
  var message = document.getElementById("timer");
  message.innerHTML = "The time is " + date;
}
Run Code Online (Sandbox Code Playgroud)

..但现在它不能实时工作.每当我点击F5它时都会给出正确的时间,但它不会再实时更新.

为什么是这样?我认为当我在函数之外声明一个变量时,它将成为一个可以在任何地方使用的全局函数.

epa*_*llo 5

因为Date()是你打电话的时候,它不会继续更新!

如果要共享它,请在函数内部更新它.

var date;
var updateMessage = function(){ 
   date = new Date();
  var message = document.getElementById("timer");
  message.innerHTML = "The time is " + date;
}
Run Code Online (Sandbox Code Playgroud)