以下是我的代码。当我在myDate
函数之外调用myTime()
变量来创建Date()
对象时,setInterval()
函数不会触发,但是当它{&#39}在myTime()
函数内部。据我所知myDate
变量是一个全局变量,它应该在函数内部或外部工作。但是为什么setInterval()
方法在我在函数外部创建Date()
对象时没有触发?专家解释了这些事情。 TIA
var myDate = new Date();
function myTime(){
document.getElementById('text').innerHTML = myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();
}
setInterval(myTime, 1000);
答案 0 :(得分:1)
你是对的:myDate
变量可以从myTime()
函数访问,但如果它在它之外声明,它的值就不会改变。在下面的代码段中,我创建了另外一个外部变量i
,以表明可以从函数中访问它:
var myDate = new Date();
var i = 0;
function myTime() {
document.getElementById('text').innerHTML = myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds() + " (" + i++ + ")";
}
setInterval(myTime, 1000);

<div id="text"></div>
&#13;
另一方面,如果在函数内部声明myDate
变量,则每次调用函数时都会创建它 - 每秒:
function myTime() {
var myDate = new Date();
document.getElementById('text').innerHTML = myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();
}
setInterval(myTime, 1000);
&#13;
<div id="text"></div>
&#13;