我要創建2個函數,給我X,東西ÿ這樣我就可以比較的2臺x和y的。以下是其中一項功能。第二個會做同樣的事情。如何訪問函數外的var?
我可以CONSOLE.LOG position.gx和position.gy裏面的功能,但我如何訪問它的功能外,所以我可以做一些像position.hx比較position.gx?
我知道它是範圍問題,但我無法弄清楚如何重新寫這個,所以我可以我可以比較position.gx從另一個函數的東西。
(與正在自學成才是我先掛了上最愚蠢的事情的問題。)
function guyLocation() {
var myElement = document.querySelector("#guy");
var xPosition = 0;
var yPosition = 0;
function getPosition(el) {
this.addEventListener("load", true);
while (el) {
if (el.tagName == "BODY") {
var xScrollPos = el.scrollLeft || document.documentElement.scrollLeft;
var yScrollPos = el.scrollTop || document.documentElement.scrollTop;
xPosition += (el.offsetLeft - xScrollPos + el.clientLeft);
yPosition += (el.offsetTop - yScrollPos + el.clientTop);
} else {
xPosition += (el.offsetLeft - el.scrollLeft + el.clientLeft);
yPosition += (el.offsetTop - el.scrollTop + el.clientTop);
}
el = el.offsetParent;
}
return {
gx: xPosition,
gy: yPosition
};
};
document.body.onkeydown = function() {
position = getPosition(myElement);
console.log(position.gx + ", " + position.gy);
};
};
簡短的回答 - 聲明的任何職能之外的變量使他們「全局」。然後該變量在函數內部可用。 –
看起來你已經解決了你的問題。你的代碼中的'position'是一個[隱含的全局](http://blog.niftysnippets。org/2008/03/horror-of-implicit-globals.html)(壞習慣),你可以在任何地方訪問它。你可以在全局範圍聲明'position'。 – Teemu
查看[閉包](https://developer.mozilla.org/en/docs/Web/JavaScript/Closures)。這是你正在尋找的。 – DavidDomain