Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не определяет функцию (https://javascript.ru/forum/misc/74955-pochemu-ne-opredelyaet-funkciyu.html)

Noobster 20.08.2018 17:22

Почему не определяет функцию
 
Имеются 2 страницы, где на одной надо автоматический грузить функцию, а на другой при клике на кнопку.
(function($) {
    "use strict";

    // Here IF/Else

    // Click btn.
    $(".getInfoByClick").click(function() {
      // Call function
      getInfoByClick();
    });

    // getInfoByClick
    var getInfoByClick = (function(){
      alert("Need call this function")
    }());

})(jQuery);

На какой странице как грузить, определяю отдельно (Here IF/Else).

Проблема с вызовом функции через клик кнопку.
Uncaught TypeError: getInfoByClick is not a function

Как вариант сделал так, на сколько правильно и в чём отличие между пред. кодом:
(function($) {
    "use strict";

    // Here IF/Else

    // Click btn.
    $(".getInfoByClick").click(function() {
      // Call function
      getInfoByClick();
    });

    // getInfoByClick
    function getInfoByClick(){
      alert("Need call this function")
    };

})(jQuery);


Спасибо.

Malleys 20.08.2018 17:41

У вас на 15 строке сразу и вызывается функция, так что getInfoByClick равно undefined

var getInfoByClick = function() {
    alert("Need call this function")
};

Noobster 20.08.2018 17:50

Но даже если на 15 строке undefined, функция ведь уже подгрузилась в страницу, т.е. при клике ведь она должна вызывается?
И что делать? Как я второй вариант писал так?

Грубо если сравнить мои прим. кода отличие я верно понимаю:
"var getInfoByClick = (function(){}())" - функцию обворачиваю в переменную.

"function getInfoByClick(){}" - просто определяю функцию

рони 20.08.2018 18:02

Цитата:

Сообщение от Noobster
"var getInfoByClick = (function(){}())" - функцию обворачиваю в переменную.

присвиваивает переменной getInfoByClick результат работы анонимной функции(появление алерта), функция у вас ничего не возвращает, значит
getInfoByClick = undefined


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