function coolo() { var tile1 = -1; var tile2 = -1; $(".grid-cell").click(swap); } function swap() { console.log(tile1) } coolo();
當然,我會得到一個Uncaught ReferenceError: tile1 is not defined
錯誤。我可以通過將變量傳遞給函數或將變量放在全局範圍中來解決它。有沒有辦法讓swap
函數訪問coolo
範圍內的變量?我可以訪問全局範圍內的變量,爲什麼不呢?我試過使用this
關鍵字,但jquery
將this
分配給已選定的dom元素。我不確定是否使用this
也可以在非jquery
的情況下工作。如果沒有,我想了解更多關於如何作用於JavaScript的範圍。來自不同範圍變量的javascript回調函數未定義
'函數交換(tile1)'...'。點擊(swap.bind(null,tile1))' – elclanrs
你應該查看一些[OOP JavaScript模式](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)。 – epascarello
您應該閱讀JavaScript中的[詞法範圍](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#Lexical_scoping)。 – saadq