这里有一些代码。评论是我现在理解的事情。
//Whenever the cursor moves on the document,
//execute function(e), e = undefined at the moment. And what is it doing there anyway? :P
document.onmousemove = function(e) {
//The variable event gets the value of e
//(undefined is falsy, so not that) OR that of window.event,
//which is true and contains lots of info on cursor position and other stuff.
var event = e || window.event;
//Record the value of the clientX key from the window.event array to variable
//window.mouseX (why window.? with just mouseX, nothing gets recorded)
window.mouseX = event.clientX;
//Same as above for vertical position
window.mouseY = event.clientY;
}
代码分别将鼠标x / y位置分配给window.mouseX和mouseY。
我正在寻找的答案是:
1)为什么将一个未定义的变量传递给函数只是为了将它与已知的事物进行比较(至少在所有情况下它都很重要,为什么window.event会是假的,因为那时我们函数不会被调用,因为它绑定到document.onmousemove?)
2)为什么X / Y鼠标位置很重要。是否记录在window.mouseX而不仅仅是mouseX或鳄鱼皮或花生?
请指导我(您对代码的评论)||除此以外)。谢谢。
答案 0 :(得分:1)
为什么要将一个未定义的变量传递给函数,只是为了将它与已知为真的事物进行比较(至少在所有情况下它都很重要,为什么如果window.event为false会有问题,因为那时我们的函数会没有被调用,因为它绑定到document.onmousemove?)
e
应始终在浏览器响应事件触发时调用事件处理程序时定义。
查看它是否未定义以及回退到全局事件对象的测试是为了在标准化之前与真正古老的浏览器向后兼容。
为什么X / Y鼠标位置很重要。是否记录在window.mouseX而不仅仅是mouseX或鳄鱼皮或花生?
以这种方式编写代码使得阅读它的人非常清楚正在设置全局。没有歧义的余地,所以维护代码的人不必花时间去查看声明变量的位置。