Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不理解代码处理mouseevent_Javascript - Fatal编程技术网

Javascript Can';不理解代码处理mouseevent

Javascript Can';不理解代码处理mouseevent,javascript,Javascript,我对JavaScript比较陌生,无法理解《雄辩的JavaScript》一书中的代码。它是用来发射mousemove的,频率不超过500毫秒,但我不明白这里的空值是用来做什么的 let scheduled = null; window.addEventListener("mousemove", event => { if (!scheduled) {//*if scheduled ==null setTimeout(() => { doc

我对JavaScript比较陌生,无法理解《雄辩的JavaScript》一书中的代码。它是用来发射mousemove的,频率不超过500毫秒,但我不明白这里的空值是用来做什么的

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毫秒内不再为空或未定义时,它将成为事件。