gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:39:50 24 4
gpt4 key购买 nike

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

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>

关于javascript - 一般全局变量和 javaScript 中作为变量的对象之间的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com