как читать такой код?

Вопросы по вёрстке и JavaScript
Ответить
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

как читать такой код?

Сообщение kwasti »

как читать подобный код?

Код: Выделить всё

(function($) {
    $.fn.rightClick = function(func) {
    ...
    };
})(jQuery);

(function($)
{
    var defaults = {
    ...
    }

    // When start of a taphold event is triggered.
    function startHandler(event) {
    ...
    }
})(jQuery);
понятно что создаются функции и массив, но к чему привязаны?
почему нельзя было их просто без

Код: Выделить всё

(function($) {
})(jQuery);
 
какой скрытый смысл в таком коде?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: как читать такой код?

Сообщение zelenin »

вас смутило двойное использование
(function($) {
})(jQuery);

?
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: как читать такой код?

Сообщение kwasti »

да
если просто так:

Код: Выделить всё

var defaults = {
    ...
    }

    // When start of a taphold event is triggered.
    function startHandler(event) {
    ...
    }
     
это будет одно и то же или нет?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: как читать такой код?

Сообщение zelenin »

(function($) {
})(jQuery);

выполняется функция с передачей внутрь jQuery как $, чтобы писать не jQuery.fnname(), а $.fnname().
это все можно нагуглить за 10 секунд, и не создавать тему, которая не требует квалификации ваших коллег по цеху.
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: как читать такой код?

Сообщение yan »

kwasti писал(а): какой скрытый смысл в таком коде?
http://largescalejs.ru/module-pattern/
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: как читать такой код?

Сообщение zelenin »

yan писал(а):
kwasti писал(а): какой скрытый смысл в таком коде?
http://largescalejs.ru/module-pattern/
и где вы в данном коде видите модуль?
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: как читать такой код?

Сообщение yan »

да, видимо это не модуль, т.к. принципиальный признак модуля - возврат объекта, это просто http://getinstance.info/articles/javasc ... pressions/, но смысл тем не менее близкий - используется для изоляции пространства имен
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: как читать такой код?

Сообщение samdark »

Не только. jQuery этот блок будет выполнять по событию DOM ready.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как читать такой код?

Сообщение ElisDN »

Sam Dark писал(а):jQuery этот блок будет выполнять по событию DOM ready.
По DOMReady будет JQuery(function () {}), а не (function ($) {})(JQuery).
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: как читать такой код?

Сообщение samdark »

Оу... дейстивтельно. Спасибо за поправку.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: как читать такой код?

Сообщение girmate »

ElisDN писал(а): По DOMReady будет JQuery(function () {}), а не (function ($) {})(JQuery).
Ставим лайк, кто вообще ничего не понял и у кого обе конструкции на одно лицо :D
Осторожно! Вы общаетесь с новичком ;)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: как читать такой код?

Сообщение zelenin »

girmate писал(а):
ElisDN писал(а): По DOMReady будет JQuery(function () {}), а не (function ($) {})(JQuery).
Ставим лайк, кто вообще ничего не понял и у кого обе конструкции на одно лицо :D
кичишься незнанием?)
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: как читать такой код?

Сообщение girmate »

Ну не то чтобы... Не всё сразу.
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: как читать такой код?

Сообщение SiZE »

kwasti писал(а):это будет одно и то же или нет?
подсказка: конфликт переменных и пространство имен. ПСМС понимание замыканий в JS надо изучать еще до синтаксиса :D
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: как читать такой код?

Сообщение andrei.obuhovski »

Это выражение означает что мы создаем анонимную функцию и тут же вызываем ее. Причем первые скобки не обязательны, они всего лишь указыввают что это функциональное выражение. Вот так тоже покатит:

Код: Выделить всё

+function($) {

}(JQuery)
А делается это потому, что в js раньше не было модулей. И если все писать в глобальное пространство то рано или поздно переменные начнут пересекаться. Аналог namespace в php.
Но теперь появились модули, поэтому таким извращением можно не заниматься.
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: как читать такой код?

Сообщение andrei.obuhovski »

SiZE писал(а): понимание замыканий в JS надо изучать еще до синтаксиса :D
+1.
Вот хороший пример для понимания замыканий: https://learn.javascript.ru/task/make-army
Ответить