在javaScript中混淆了通用全局变量和作为变量的对象



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

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

你是对的: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>

相关内容

  • 没有找到相关文章

最新更新