|
Несколько вопросов по JQUERY.
1. Какая разница между анонимной функцией и той которая имеет имя?
2. Можно в Jguery применять все методы и свойства Яваскрипта? |
1. к именной функции ты можешь обратится в другом участке кода по имени
2. Да. Jguery - фреймворк написанный на JavaScript |
Анонимная функция исполняется без её вызова? То есть анонимная функция исполняется когда она была написана.
А функцию с названием нужно писать в том месте где она должна выполниться? Вот анонимная. Написали, исполнилась function(){ var q = 11; } Вот с названием. Она не выполнится пока не вызовем её kode();. function kode(){ var q = 11; } |
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):haha: |
Это понятно. Но спасибо.
Вопрос в другом был. Отличия в выполнении анонимных функций и названных функций. |
Цитата:
Функция-объявление выглядит так: function fn() { } // точка с запятой не нужна Она может быть вызвана до (!) ее объявления. Она не может быть анонимной. Функция-выражение используется для callback-ов, для незамедлительного вызова и т.д. Она может быть анонимной. А может и не быть таковой. Цитата:
Анонимность функции никак не влияет на ее "исполнение". Анонимность птосто означает что у функции нет имени. А следовательно, единственный вариант как-то ее использовать - это сделать что-то с ссылкой на нее. То есть это либо сразу же вызвать функцию: (function(){})(); // скобки подсказывают интерптератору, что наша функция является функцией-выражением Либо присвоить ссылку в переменную: var fn = function() {}; // Да да, это анонимная функция! Либо передать параметром в вызов другой функции: $.post('url', function(){}); Но все эти вещи можно делать и с не-анонимной функцией: (function fn(){ alert(typeof fn) })(); var fn = function fn() {}; //(IE старых версий колбаснет от такого кода) $.post('url', function fn(){}); |
Вы решительно меня не понимаете.
$(`#object`).click(function(){ alert('Text')}); Вот написалась АНОНИМНАЯ функция и ТУТ ЖЕ она исполнилась. Кючевые слова АНОНИМНАЯ и ТУТ ЖЕ. Вот функция с названием НАПИСАЛАСЬ var ok = function funkciya(){ alert('123'); } НО ИСПОЛНИЛАСЬ только ТУТ когда эту функцию ВЫЗВАЛИ. funkciya(); |
Цитата:
$(`#object`).click(function(){ alert('Text')}()); Цитата:
Цитата:
Цитата:
|
Вы проверьте код. Я проверил.
Мой вариант -правильный. $("#object").click(function(){ alert("Text")}); Происходит событие нажатия кнопки мыши и вылазит окошко алерта. Ну да. Тут команда .click запускает функцию, поэтому скобки не нужны? Ага. Понял. Для моментального исполнения функции (в том месте где эта функция была написана) нужно дописывать эти скобки, а если в другом месте АНОНИМНУЮ функцию выполнить хотим, то её надо переменной присвоить. Так бы и сказали. Столько букв написали пффф. Это я и хотел сказать в третьем сообщении http://javascript.ru/forum/jquery/44...tml#post296821 Спасибо что про скобки сказали. |
Цитата:
Цитата:
Просто в первом случае ссылка на функцию передается как параметр вызываемой функции click(), а во втором случае - присваивается переменной ok. И на самом деле разницы практически никакой! Ибо параметр - это тоже переменная. $.protototype.click = function(callback) { // callback ссылается на нашу анонимную функцию // и какая хрен разница если скажем вместо этото у нас тут будет написано // callback = function() {}; this.get(0).addEventListener('click', callback); }; $(el).click(function(){}); Цитата:
Вот так - да: ok(). А вот имя funkciya будет видно только внутри самой функции (скажем, для рекурсивного вызова). Но об этом я не писал выше. Короче, перечитай весь тред еще раз, походу ты не все вкурил. |
Часовой пояс GMT +3, время: 10:31. |
|