Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Что значит конструкция (function(){ ... }) (https://javascript.ru/forum/jquery/25311-chto-znachit-konstrukciya-function-%7B-%7D.html)

iNfantry 01.02.2012 14:20

Что значит конструкция (function(){ ... })
 
Всем привет, вопрос наверно совсем нубский, но что поделать.
Возникла проблема, конфликт двух компонентов, один просто на JS а другой JQuery.

Проблема в первом компоненте, наверное многие узнают его, вот так он выглядит

//fgnass.github.com/spin.js#v1.2.1
(function(window, document, undefined) {

/**
 * Copyright (c) 2011 Felix Gnass [fgnass at neteye dot de]
 * Licensed under the MIT license
 */

  var prefixes = ['webkit', 'Moz', 'ms', 'O'], /* Vendor prefixes */
      animations = {}, /* Animation rules keyed by their name */
      useCssAnimations;

  /**
   * Utility function to create elements. If no tag name is given,
   * a DIV is created. Optionally properties can be passed.
   */
   
   ...//остальной код

})(window, document);



Впервые вижу данную конструкцию, и чтобы понять в чем проблема полагаю надо получить ответ на этот простой вопрос. :-?

melky 01.02.2012 14:30

создаёт функцию, принимающую три аргумента, возвращает её и отдаёт на исполнение, передавая три аргумента их двух.

данный код эквивалентен этому :

(function(window,document, undefined){})(window, document);
// ====>
function func(window, document, undefined){  };

func(window, document);


в функции первый аргумент равен window, второй - document, третий - типу undefined.

делается это для замыкания и для укорачивания имён window,document,undefined при сжатии скрипта.

iNfantry 01.02.2012 15:07

Понятно, а нет ли способа в пространство имён запихнуть компонент если он в таком виде? Почитал про то как делаются пространства имен в ЖС, но пока не могу сообразить как сделать...


Часовой пояс GMT +3, время: 14:43.