Каждая функция контекста выполнения в javascript имеет контекст контекста этот параметр , который задается:
Каким бы ни был этот контекст области видимости, ссылается на «this».
Вы можете изменить это значение для параметра этого контекста области , используя func.call
, func.apply
или func.bind
.
По умолчанию и что сбивает с толку большинство новичков, когда вызывающий вызывающий вызов вызывается после того, как событие добавлено в элемент DOM, контекст области это значение функции является элементом DOM.
jQuery делает это тривиальным для изменения с помощью jQuery.proxy.
Нет, это не плохая практика. Помещение return
, где это имеет смысл, улучшает удобочитаемость и пригодность для обслуживания и делает Ваш код более простым понять. Вы не должны заботиться как finally
, блок будет выполняться, если return
с оператором встретятся.
Наконец будет выполняться независимо от того, что, таким образом, это не имеет значения.
final ListView lv = (ListView) findViewById(R.id.your_list_view);
– Lekensteyn
5 June 2014 в 10:15
Лично, я избежал бы этого вида кодирования, поскольку я не испытываю желание видеть операторы возврата прежде наконец операторы.
Мой ум прост, и он обрабатывает вещи скорее линейно. Поэтому то, когда я иду через код для сухого выполнения, у меня будет тенденция думать, что, после того как я могу достигнуть оператора возврата, все следует, не имеет значения, который, очевидно, является довольно неправильным в этом случае (не, что это влияло бы на оператор возврата, но чем побочные эффекты могли быть).
Таким образом, я расположил бы код так, чтобы оператор возврата всегда появился после наконец операторы.
Это может ответить на Ваш вопрос
, Что действительно происходит в попытке {возвращают x;} наконец {x = пустой указатель;} оператор?
От чтения того вопроса это кажется, что у Вас может быть другая структура выгоды попытки в наконец оператор, если Вы думаете, что это могло бы выдать исключение. Компилятор выяснит, когда возвратить значение.
Тем не менее могло бы быть лучше реструктурировать Ваш код так или иначе именно так, это не смущает Вас позже или кого-то еще, кто может не знать об этом также.
Функционально нет никакого различия.
Однако существует одна причина того, что не было сделано это. Более длинные методы с несколькими точками выхода часто более трудно прочитать и проанализировать. Но то возражение больше имеет отношение к операторам возврата, чем выгода и наконец блоки.
В Вашем примере так или иначе эквивалентно, я не был бы даже удивлен, сгенерировал ли компилятор тот же код. Если исключение происходит в наконец блок, у Вас есть те же проблемы, помещаете ли Вы оператор возврата в блок или за пределами него.
реальный вопрос стилистически, который является лучшим. Мне нравится писать мои методы так, чтобы был только один оператор возврата, этот способ, которым легче досмотреть поток до конца из метода, из этого следует, что мне также нравится помещать оператор возврата в последний раз, таким образом, легко видеть, что это - конец метода и этого, что он возвращает.
я думаю с оператором возврата, так же аккуратно помещенным как последний оператор, другие, менее вероятно, приедут и опрыснут несколько операторов возвратов в другие части метода.
lv
не доступен внутреннийonItemClick
. What' s хороший способ обойти это? – shinjin 9 April 2014 в 04:47