0

下面是我的代码。当我在函数myDate外部调用变量myTime()来创建Date()对象时,该setInterval()函数不会触发,但是当它在myTime()函数内部时。据我所知myDate,变量是一个全局变量,它应该在函数内部或外部工作相同。但是为什么setInterval()当我在Date()函数之外创建对象时该方法没有触发呢?专家解释事情。TIA

var myDate = new Date();
    function myTime(){
        document.getElementById('text').innerHTML = myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();
    }
    setInterval(myTime, 1000);
4

1 回答 1

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>

另一方面,如果您myDate在函数内声明变量,它将在每次调用函数时创建 - 每秒:

function myTime() {
    var myDate = new Date();
    document.getElementById('text').innerHTML = myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();
}
setInterval(myTime, 1000);
<div id="text"></div>

于 2018-01-21T22:30:41.240 回答