问题出在这里:我希望得到全局变量X,它取值为alpha。使用下面的代码,控制台中X的值始终为零。
var X = 0;
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var alpha = Math.round(event.alpha);
X = alpha;
}
console.log(X);
编辑: 我想做一些像
这样的事情var X = 0;
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var alpha = Math.round(event.alpha);
X = alpha;
}
function f(x){ return x*x }
f(X);
现在我明白我必须将f(X)放在函数handleOrientation中。我想没有别的办法吗?
答案 0 :(得分:3)
您在更改之前使用X
的值。以下是代码运行的顺序:
创建一个名为handleOrientation
的函数。 (为什么首先?因为创建函数声明所描述的函数是进入范围时首先要做的事情之一。)
声明一个名为X
的变量。 (首先不仅是因为它位于顶部,而且因为创建用var
声明的变量是在进入范围后首先完成的事情之一,在处理函数声明后不久。)
将0
分配给X
。 (这是运行的第一个逐步代码。)
在addEventListener
上致电window
。
将X
输出到控制台。
(如果deviceorientation
触发了window
事件,则更新X
的值。
相反,在更改后使用值:
var X = 0;
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var alpha = Math.round(event.alpha);
X = alpha;
console.log(X);
}
或者:
var X = 0;
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var alpha = Math.round(event.alpha);
X = alpha;
doSomethingWithX();
}
function doSomethingWithX() {
console.log(X);
}