Почему в javascript самозваная анонимная функция окружает обратный вызов jQuery onReady?

В настоящее время я играю с playframework. Я начал с урока, который использует Coffeescript. CoffeeScript преобразуется в javascript, и в этом конкретном примере метод javascript должен динамически генерировать список при загрузке страницы.

Сгенерированный javascript использует шаблон, который я видел ранее, и который я прочитал, можно использовать для определения переменных или функций. То есть он охватывает все внутри анонимной функции.

Однако внутри этой анонимной функции есть обратный вызов для window.isReady в стиле JQuery.

(function() {
  $(function() {
      // the code within the callback goes here!
  });

}).call(this);

Это просто из-за того, что это было сгенерировано набором запрограммированных правил, или может быть причина иметь обратный вызов внутри анонимной функции? Причиной для охвата этого обратного вызова JQuery onReady?

Конечно, функциональность работает без ограничения так называемой анонимной функцией. Итак, есть ли польза?

2 ответа

Решение

Поскольку функция разграничивает область действия, вы хотите сделать это, чтобы предотвратить загрязнение глобального пространства имен.

В этом простом примере это может не понадобиться, поскольку вы не сохраняете никакие переменные, но у вас могут быть рядовые или другие функции (а не глобальные)

Как это:

(function() {

  var a = 5;

  var f = function() { ... }


  $(function() {
      // the code within the callback goes here!
      f();
      console.log(a);
  });

}).call(this);

Это называется IIFE (выражение для немедленного вызова функции). Ну... хоть немного. Вы обычно не используете .call для IIFE, но он делает то же самое. Его целью в данном случае является главным образом предотвращение загрязнения глобального масштаба.

Узнайте о них здесь.

Другие вопросы по тегам