Синтаксис JavaScript 101. Вот объявление функции:
function foo() {}
Обратите внимание, что нет точки с запятой: это просто объявление функции. Вам понадобится вызов foo()
, чтобы фактически запустить функцию.
Теперь, когда мы добавляем кажущуюся безобидную восклицательную знак: !function foo() {}
, она превращает ее в выражение. В настоящее время это выражение функции.
Конечно, !
не вызывает функцию, но мы можем теперь положить ()
в конец: !function foo() {}()
, который имеет более высокий приоритет, чем !
и мгновенно вызывает функцию.
Так что автор делает сохранение байта на выражение функции; более читаемым способом его написания было бы следующее:
(function(){})();
Наконец, !
возвращает выражение true. Это связано с тем, что по умолчанию все возвраты IIFE undefined
, что оставляет нас с !undefined
, который является true
. Не особенно полезно.
Вы можете использовать getActivity()
во фрагменте, чтобы сделать что-то с активностью, в которой содержится. Это может быть слишком общий ответ, но я не могу комментировать, так как у меня пока недостаточно репутации. Поэтому мне пришлось опубликовать это как ответ.