Javascript 事件变量来自哪里?
我试图理解以下javascript代码:Javascript 事件变量来自哪里?,javascript,Javascript,我试图理解以下javascript代码: onMouseMoved = (function(_this) { return function(event) { dx = (event.pageX/3) / window.innerWidth; dy = (event.pageY/3) / window.innerHeight; return tr = Math.atan2(hy, hx); }; })(this); window.a
onMouseMoved = (function(_this) {
return function(event) {
dx = (event.pageX/3) / window.innerWidth;
dy = (event.pageY/3) / window.innerHeight;
return tr = Math.atan2(hy, hx);
};
})(this);
window.addEventListener('mousemove', onMouseMoved, false);
为什么外部函数返回函数?事件变量来自哪里
为什么外部函数返回函数
因为:
(a) 它在函数表达式前面有一个return语句
及
(b) 返回的函数用作预期该参数为函数的函数的参数
事件变量来自哪里
从实现事件侦听器例程的本机浏览器代码(根据for
addEventListener
)第一个函数是立即调用的函数表达式(IIFE),它立即执行并返回另一个设置为事件处理程序回调的函数
也可以这样写
window.addEventListener('mousemove', onMouseMoved, false);
function onMouseMoved(event) {
dx = (event.pageX/3) / window.innerWidth;
dy = (event.pageY/3) / window.innerHeight;
return tr = Math.atan2(hy, hx);
};
还是这个
window.addEventListener('mousemove', function(event) {
dx = (event.pageX/3) / window.innerWidth;
dy = (event.pageY/3) / window.innerHeight;
return tr = Math.atan2(hy, hx);
}, false);
这将是完全相同的,但我们不会有\u This
的值,这似乎是IIFE的原因,锁定在This
的外部值中,但函数参数从未使用过,因此这里似乎不需要它
因此,事件参数来自本机
有关生活如何运作的详细解释,请参见此变量是您的参数。或者你会问这个值来自哪里?这是咖啡脚本生成的代码,不是吗?IEFE的原因是编译器不是很聪明。如果在函数中不使用
此
,则应使用->
而不是=>
。使生成的代码更清晰。我不写咖啡脚本,但谢谢!