Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2014, 00:37
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Несколько вопросов по JQUERY.
1. Какая разница между анонимной функцией и той которая имеет имя?

2. Можно в Jguery применять все методы и свойства Яваскрипта?

Последний раз редактировалось koderman, 10.02.2014 в 00:51.
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2014, 00:56
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

1. к именной функции ты можешь обратится в другом участке кода по имени
2. Да. Jguery - фреймворк написанный на JavaScript
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2014, 01:00
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Анонимная функция исполняется без её вызова? То есть анонимная функция исполняется когда она была написана.
А функцию с названием нужно писать в том месте где она должна выполниться?

Вот анонимная. Написали, исполнилась

function(){
var q = 11;
}


Вот с названием. Она не выполнится пока не вызовем её kode();.

function kode(){
var q = 11;
}

Последний раз редактировалось koderman, 10.02.2014 в 01:07.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2014, 01:47
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

alert(kode());
      // эта строка не выполнится myfunc - не определена
      //alert(myfunc());
      function kode() {
        return 'YES';
      }
      var myfunc = function () {
          return 'Hi';
        }
      //а здесь myfunc - уже определена
      alert(myfunc());
      var a;
      (function goodbay() {
        alert('Goodbay');
        a = 10;
      }());
      alert(a)
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2014, 03:28
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Это понятно. Но спасибо.
Вопрос в другом был. Отличия в выполнении анонимных функций и названных функций.
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2014, 04:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от koderman
Какая разница между анонимной функцией и той которая имеет имя?
Для начала, есть два типа функций: функция-выражение, и функция-объявление.

Функция-объявление выглядит так:

function fn() {

} // точка с запятой не нужна


Она может быть вызвана до (!) ее объявления. Она не может быть анонимной.

Функция-выражение используется для callback-ов, для незамедлительного вызова и т.д. Она может быть анонимной. А может и не быть таковой.
Сообщение от koderman
Вот анонимная. Написали, исполнилась
Твой код неправильный, он вызовет SyntaxError.
Анонимность функции никак не влияет на ее "исполнение". Анонимность птосто означает что у функции нет имени. А следовательно, единственный вариант как-то ее использовать - это сделать что-то с ссылкой на нее.

То есть это либо сразу же вызвать функцию:
(function(){})(); // скобки подсказывают интерптератору, что наша функция является функцией-выражением


Либо присвоить ссылку в переменную:
var fn = function() {}; // Да да, это анонимная функция!


Либо передать параметром в вызов другой функции:
$.post('url', function(){});


Но все эти вещи можно делать и с не-анонимной функцией:
(function fn(){ alert(typeof fn) })();

var fn = function fn() {}; //(IE старых версий колбаснет от такого кода)

$.post('url', function fn(){});
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 10.02.2014 в 05:02.
Ответить с цитированием
  #7 (permalink)  
Старый 10.02.2014, 21:06
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Вы решительно меня не понимаете.
$(`#object`).click(function(){ alert('Text')});

Вот написалась АНОНИМНАЯ функция и ТУТ ЖЕ она исполнилась. Кючевые слова АНОНИМНАЯ и ТУТ ЖЕ.

Вот функция с названием НАПИСАЛАСЬ
var ok = function funkciya(){
 alert('123');
}


НО ИСПОЛНИЛАСЬ только ТУТ когда эту функцию ВЫЗВАЛИ.

funkciya();

Последний раз редактировалось koderman, 10.02.2014 в 21:09.
Ответить с цитированием
  #8 (permalink)  
Старый 10.02.2014, 21:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от koderman
Вот написалась АНОНИМНАЯ функция и ТУТ ЖЕ она исполнилась
С чего бы вдруг? Чтобы вызвать функцию, нужно дописать скобочки:

$(`#object`).click(function(){ alert('Text')}());
Сообщение от koderman
Вы решительно меня не понимаете.
Похоже, потому-что ты инопланетянин, и не пониаешь нас:
Сообщение от koderman
Вот написалась АНОНИМНАЯ функция и ТУТ ЖЕ она исполнилась. Кючевые слова АНОНИМНАЯ и ТУТ ЖЕ.
Но выше:
Сообщение от danik.js
Анонимность функции никак не влияет на ее "исполнение". Анонимность птосто означает что у функции нет имени
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2014, 03:40
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Вы проверьте код. Я проверил.
Мой вариант -правильный.

$("#object").click(function(){ alert("Text")});



Происходит событие нажатия кнопки мыши и вылазит окошко алерта.


Ну да. Тут команда .click запускает функцию, поэтому скобки не нужны?


Ага. Понял. Для моментального исполнения функции (в том месте где эта функция была написана) нужно дописывать эти скобки, а если в другом месте АНОНИМНУЮ функцию выполнить хотим, то её надо переменной присвоить.
Так бы и сказали. Столько букв написали пффф.

Это я и хотел сказать в третьем сообщении Какая разница между анонимной функцией и той которая имеет имя?
Спасибо что про скобки сказали.

Последний раз редактировалось koderman, 11.02.2014 в 04:20.
Ответить с цитированием
  #10 (permalink)  
Старый 11.02.2014, 09:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от koderman
Так бы и сказали. Столько букв написали пффф.
Ну я объяснил все сразу, чтобы не было непонимания. А то ты смешал в кучу анонимность, незамедлительный вызов и разницу между выражением и объявлением.

Сообщение от koderman
Вот написалась АНОНИМНАЯ функция.
...
Вот функция с названием НАПИСАЛАСЬ
В обоих случаях у тебя анонимная функция!!! Если бы ты прочитал внимательней мои пояснения, то понял бы это!

Просто в первом случае ссылка на функцию передается как параметр вызываемой функции click(), а во втором случае - присваивается переменной ok. И на самом деле разницы практически никакой! Ибо параметр - это тоже переменная.

$.protototype.click = function(callback) {
    // callback ссылается на нашу анонимную функцию
    // и какая хрен разница если скажем вместо этото у нас тут будет написано
    // callback = function() {};
    this.get(0).addEventListener('click', callback);
};

$(el).click(function(){});


Сообщение от koderman
Вот функция с названием НАПИСАЛАСЬ
var ok = function funkciya(){
 alert('123');
}


НО ИСПОЛНИЛАСЬ только ТУТ когда эту функцию ВЫЗВАЛИ.

funkciya();
Нифига не исполнится
Вот так - да: ok(). А вот имя funkciya будет видно только внутри самой функции (скажем, для рекурсивного вызова). Но об этом я не писал выше.

Короче, перечитай весь тред еще раз, походу ты не все вкурил.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 11.02.2014 в 09:31.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание iframe в Firefox mrbean11 Firefox/Mozilla 8 02.11.2012 21:23
Какая разница между модулями DOM Level 2 и интерфейсами Node? dump Общие вопросы Javascript 3 09.08.2012 17:22
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Какая разница между определениями функций Nadine Общие вопросы Javascript 1 07.03.2012 16:07