Javascript Can';不理解代码处理mouseevent
我对JavaScript比较陌生,无法理解《雄辩的JavaScript》一书中的代码。它是用来发射mousemove的,频率不超过500毫秒,但我不明白这里的空值是用来做什么的Javascript Can';不理解代码处理mouseevent,javascript,Javascript,我对JavaScript比较陌生,无法理解《雄辩的JavaScript》一书中的代码。它是用来发射mousemove的,频率不超过500毫秒,但我不明白这里的空值是用来做什么的 let scheduled = null; window.addEventListener("mousemove", event => { if (!scheduled) {//*if scheduled ==null setTimeout(() => { doc
let scheduled = null;
window.addEventListener("mousemove", event => {
if (!scheduled) {//*if scheduled ==null
setTimeout(() => {
document.body.textContent =
`Mouse at ${scheduled.pageX}, ${scheduled.pageY}`;
scheduled = null;
}, 500);
}
scheduled = event;
});
代码第一次启动
scheduled
的值为空,当事件触发时,它将进入if
状态并等待500 ms
,同时,函数将scheduled
设置为某个值。在500ms
等待时间结束后,它将再次将scheduled
设置为null
所以每次scheduled
被设置为null
时,事情都会发生。当事情开始发生时,它将计划的更改为某个值,否则就不会发生其他事情
别糊涂了。
比方说,mousemove事件在1秒内被触发100次。所以,当第一个mouseevent被触发时,我们要求系统不要执行任何事情,如果事情已经安排好了。通过上面的代码,我们知道事情在500ms
内保持预定时间。这样,mousemove事件仍将执行100次,但mousemove事件执行的代码将在1秒内执行两次,而不是100次。第一次代码启动时,scheduled
的值为空,当触发事件时,它将进入if
状态并等待500 ms
,同时,该函数将scheduled
设置为某个值。在500ms
等待时间结束后,它将再次将scheduled
设置为null
所以每次scheduled
被设置为null
时,事情都会发生。当事情开始发生时,它将计划的更改为某个值,否则就不会发生其他事情
别糊涂了。
比方说,mousemove事件在1秒内被触发100次。所以,当第一个mouseevent被触发时,我们要求系统不要执行任何事情,如果事情已经安排好了。通过上面的代码,我们知道事情在500ms
内保持预定时间。这样,mousemove事件仍将执行100次,但mousemove事件执行的代码将在一秒钟内执行两次,而不是100次。您不必将该值保持为“null”。它也可以是基于逻辑的任何其他类型(例如布尔值)。请参见下面的布尔值示例-
let scheduled = false;
window.addEventListener("mousemove", event => {
if (!scheduled) {//*if not scheduled
setTimeout(() => {
document.body.textContent =
`Mouse at ${event.pageX}, ${event.pageY}`;
scheduled = false;
console.log("Counter restarting")
}, 3000);
}
scheduled = true;
});
首先,当程序启动时,“scheduled”标志设置为false-表示在3秒钟内没有设置当前超时。因此,我们设置timeout并将“scheduled flag”设置为true。一旦达到超时,将打印当前鼠标位置,并将“scheduled”标志设置为false,然后重复该过程。您不必将该值保留为“null”。它也可以是基于逻辑的任何其他类型(例如布尔值)。请参见下面的布尔值示例-
let scheduled = false;
window.addEventListener("mousemove", event => {
if (!scheduled) {//*if not scheduled
setTimeout(() => {
document.body.textContent =
`Mouse at ${event.pageX}, ${event.pageY}`;
scheduled = false;
console.log("Counter restarting")
}, 3000);
}
scheduled = true;
});
首先,当程序启动时,“scheduled”标志设置为false-表示在3秒钟内没有设置当前超时。因此,我们设置timeout并将“scheduled flag”设置为true。一旦达到超时,将打印当前鼠标位置,并显示“已计划”标志被设置为false,进程将重复。null与未定义相同。它只是编写计划为“未定义”的程序集的人,这意味着还没有发生任何事情,当计划发生的事情在接下来的500毫秒内不再为null或未定义时,它将成为事件。null与未定义相同,它只是编写程序集的人计划为“未定义”,这意味着什么也没有发生,当计划发生的事情在接下来的500毫秒内不再为空或未定义时,它将成为事件。