一般全局变量和对象之间的混淆作为javaScript中的变量

时间:2018-01-21 22:13:32

标签: javascript global-variables jsobject

以下是我的代码。当我在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);

1 个答案:

答案 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;
&#13;
&#13;

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

&#13;
&#13;
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;
&#13;
&#13;