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)' ... '.click (swap.bind (null, tile1)) ' – elclanrs
Вы должны найти некоторые [шаблоны JavaScript ООП] (http://addyosmani.com/resources/essentialjsdesignpatterns/book/). – epascarello
Вы должны прочитать о [лексическом охвате] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#Lexical_scoping) в JavaScript. – saadq