event listener 里的变量怎么变成全局变量

2017-04-02 01:26:03 +08:00
 wico97

if (window.DeviceOrientationEvent) { window.addEventListener('deviceorientation', function hd(eventData) { d =eventData.gamma; window.removeEventListener('deviceorientation',hd,false); },false); }

怎么让全局使用呢

2454 次点击
所在节点    JavaScript
7 条回复
moult
2017-04-02 03:46:22 +08:00
办法一,在事件函数的外面,也就是全局位置进行声明。
办法二, window.foo = bar;
moult
2017-04-02 03:47:42 +08:00
直接赋值,不用 var 的话,好像是全剧的,但是感觉不是很优雅。
des
2017-04-02 08:31:58 +08:00
用闭包即可,一楼方法也可以
(function(window){
return function hd(eventData) {
d =eventData.gamma;
window.removeEventListener('deviceorientation',hd,false);
}})()
wico97
2017-04-02 18:22:49 +08:00
@moult 可以在在全局先声明 d 变量,但 event listener 的事件不会更新 d 的内容。这点让我头疼。
wico97
2017-04-04 03:30:24 +08:00
@des 测试不行呀。还有别的方法吗
des
2017-04-04 03:34:03 +08:00
@wico97 写掉了,最后一个括号里面是 window
wico97
2017-04-17 16:12:43 +08:00
@des 还是不行。接着求大神

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/352098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX