Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2019, 14:41
Новичок на форуме
Отправить личное сообщение для victor256 Посмотреть профиль Найти все сообщения от victor256
 
Регистрация: 13.06.2012
Сообщений: 2

Нужна помощь в объяснении синтаксиса (говно)кода
Приветствую. Есть такое:


Этот код поставил меня в тупик. Так много вопросов и так мало ответов.
1) что это вообще за синтаксис сверху: !function и далее функции через запятую?
2) зачем делать
var $ = jQuery;

есть ли в этом неведомый мне смысл?
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2019, 15:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

victor256,
1) ! способ запустить функцию, сразу после создания.
2) так короче.
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2019, 21:59
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от victor256
1) что это вообще за синтаксис сверху: !function и далее функции через запятую?
Дело в том, чтобы вызвать анонимную функцию, она должна быть выражением. Функцию можно сделать выражением, заключив её в скобки!
(function(e) { /* ... */ })(jQuery);
Этот вызов функции представляет выражение, которое возвращает функция.

С ним можно работать, как с любым другим выражением, например если функция возвращает булево значение, то можно применить оператор «не», который поменяет булево значение на противоположное. Конечно же результат такого вычисления должен быть записан в переменную, иначе оно бессмысленно и может быть упрощено.

var isSomethingNotTrue = !(function(e) { /* ... */ })(jQuery);
Можно убрать лишнюю пару скобок
var isSomethingNotTrue = !function(e) { /* ... */ }(jQuery);
Получилось как у вас, но у вас результат никуда не записывается, так что можно упростить до первого варианта, который я привёл выше.

Сообщение от рони
1) ! способ запустить функцию, сразу после создания.
Интересно, что это не запускает никакую функцию вообще!

Если что-то перечисляется через запятую, то оно становится выражением! Обратите внимание, что третье выражение у вас вызывается нормально!

Сообщение от victor256
2) зачем делать
var $ = jQuery
Знак доллара является разрешенным символов для идентификатора в языке Javascript. jQuery использует знак $ как сокращение для идентификатора jQuery.
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2019, 22:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Malleys
Интересно, что это не запускает никакую функцию вообще!
не понимаю.
function() {
  alert("1");
}();
так не сработает
а так сработает
!function() {
  alert("1");
}();

что это, если не способ запустить(вызвать) функцию? от того что в результате получится выражение, по сути то - это запуск функции.

Последний раз редактировалось рони, 01.07.2019 в 22:24.
Ответить с цитированием
  #5 (permalink)  
Старый 01.07.2019, 22:40
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
не понимаю.
Не знаю, что вы пытаетесь доказать...
Сообщение от рони
так не сработает
Конечно же нет, там нет выражения
Сообщение от рони
а так сработает
Метод псевдонаучного тыка?

Я же написал, вы бы сначала почитали...

Ваше не понимаю, записывается так... (должно быть выражение)
(function() {
  alert("1");
})();


Сообщение от рони
а так сработает
А зачем вам вычислять булево выражение? понятно, что true будет, функция возвращает undefined... Но зачем, вы же не используете это нигде!!!

var myHappyBoolean = !function() {
  alert("1");
}();

alert(myHappyBoolean); // true


Сообщение от рони
что это, если не способ запустить(вызвать) функцию?
Вы запускаете функцию и ещё вычисляете.

Последний раз редактировалось Malleys, 01.07.2019 в 22:50.
Ответить с цитированием
  #6 (permalink)  
Старый 01.07.2019, 22:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Malleys,
я уже неоднократно писал вам, мне порой недоступны ваши обьяснения, в данном случае, это снова так.
Ответить с цитированием
  #7 (permalink)  
Старый 01.07.2019, 22:52
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
я уже неоднократно писал вам, мне порой недоступны ваши обьяснения, в данном случае, это снова так.
Почему следует произвести ещё одну операцию после того, как была вызвана функция?

!function() {
  alert("1");
}();


-function() {
  alert("1");
}();


+function() {
  alert("1");
}();


~function() {
  alert("1");
}();


[function() {
  alert("1");
}()];


Почему нельзя сразу вызвать функцию?

(function() {
  alert("1");
})();
Ответить с цитированием
  #8 (permalink)  
Старый 01.07.2019, 22:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Malleys
Вы запускаете функцию
Сообщение от Malleys
это не запускает никакую функцию
извините, но это бред какой-то, вы меня развеселили, думаю ваши обьяснения пригодятся, на форуме есть 3 или 4 темы, по заданным в начале вопросам, к сожалению я их не нашёл.
Ответить с цитированием
  #9 (permalink)  
Старый 01.07.2019, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Malleys,
то есть вы полностью отрицаите, возможность использования ! и других знаков?
Ответить с цитированием
  #10 (permalink)  
Старый 01.07.2019, 23:09
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
то есть вы полностью отрицаете, возможность использования ! и других знаков?
Да, если они будут производит работу в холостую! А если функция реально что-то вычисляет и возвращает, то конечно же вы можете применить оператор ! и затем присвоить результат такого вычисления переменной, чтобы дальше с ней работать!

То, что вы показали с оператором !, на самом деле бессмысленно, зачем это вычисление? На получаемый объект никакая переменная не ссылается, и по сути сборщик мусора может сразу его удалить.

Сообщение от рони
извините, но это бред какой-то, вы меня развеселили
А что тут смешного? Вы запускаете функцию при помощи (), а это [оператор !] не запускает никакую функцию.

Так всё же, почему вам нельзя просто вызвать функцию?
(function() {
  alert("1");
})();

Последний раз редактировалось Malleys, 01.07.2019 в 23:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17