Подтвердить что ты не робот

Функция самозапуска jQuery vs javascript

В чем разница между -

Сначала: -

(function () {

    var Book = 'hello';

}());

Второй: -

(function () {

    var Book = 'hello';

})();

Первый и второй аналогичные, как в работе.

Третий: -

(function ($) {

    var Book = 'hello';

})(jQuery);

Какой шаблон мне нужно использовать и где в моем кодировании. Третий шаблон модуля, который я видел, когда читал статью, связанную с backboneJS.

То, что я понял из Третьей, "самопроизвольной функции с аргументом" jQuery ""....

Может ли кто-нибудь дать мне некоторое представление о вымышленных выражениях (IIFE).

Спасибо!

4b9b3361

Ответ 1

Во всех случаях вы выполняете анонимную функцию. Я думаю, что 1 - это то же самое, что и 2. В третьем случае вы передаете jQuery в качестве аргумента. Это делается, когда вы хотите инкапсулировать jQuery в область вашей функции.

Например, в вашем приложении jQuery var может быть jQuery. Но в рамках вашей анонимной функции вы можете использовать ее как $.

(function ($) {
    //Here jQuery is $
    var Book = $(document.body).text();    

})(jQuery);

//Out of your function, you user jQuery as jQuery (in this example)
var Book = jQuery(document.body).text();

Ответ 2

Это называется замыканием, чтобы избежать конфликтов с другими библиотеками, такими как mootools, которые используют $. Таким образом, вы можете обеспечить использование $ в этой функции с передачей jQuery в качестве параметра.

(function ($) {
   $(function () { // Here in this block you can use '$' in place of jQuery
    .......
   });
})(jQuery); //<----passing jquery to avoid any conflict with other libraries.

Ответ 3

Выражения с немедленным вызовом функций (IIFE) являются одной из основных функций JavaScript. Его главная цель - не загромождать пространства имен одноразовыми функциями и переменными.

если вы используете переменную или функцию только один раз, вам не нужно делать ее доступной для остальной части кода (например, вы делаете частный доступ). В случае функций вы можете просто позволить им быть анонимными, как показано ниже:

(function(){
  console.log("Hello symfony world!");
}());

Пожалуйста, проверьте с этой ссылкой

Кроме того, вот полезное пояснительное видео менее чем за 7 минут

Ответ 4

Как указывали другие ответы, все они выполняют анонимную функцию или сразу анонимные функции.

Третий пример - использование псевдонимов для переменных вне функции. Это хороший способ предотвратить конфликты имен и создать код, где можно легко изменить модуль, используемый в этой функции. Это, по сути, форма инъекции зависимостей.

(function (doc, win, $, myModule) {
    // Code
}(document, window, jQuery, window.MYAPP.myModule));

doc, win, $ и myModule являются введенными переменными. С помощью этого шаблона тривиально изменять любой из введенных компонентов. Как этот

(function (doc, win, $, myModule) {
    // Code
}(document, window, jQuery, window.MYAPP.myModule2)); //Use myModule2 instead myModule

Ответ 5

Как и любой другой ответ, в третьей функции вы передаете функции JQuery.

Я хотел бы остановиться и объяснить, почему первые два одинаковы.

Когда вы создаете функцию, имя этой функции действительно является указателем функции . Например, в function foo(){}, foo является указателем на функцию, которую вы только что создали (что объясняет такие вещи, как this). Вы разыгрываете этот указатель (и таким образом выполняете функцию), добавляя скобки в конце имени функции: foo().

Итак, если мы снова посмотрим на этот код, в первом номере, вы сначала создадите функцию:

function () {

    var Book = 'hello';

}

И затем вы разыщите его, эффективно выполнив функцию: ()

Во втором примере вы окружите целиком создание функции в скобках:

(function () {

    var Book = 'hello';

})

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

Ответ 6

Все три примера: Выражения с мгновенной выдержкой (IIFE).

Единственное различие заключается в том, что в третьем примере jQuery передается как переменная, позволяющая использовать его в рамках IIFE, используя соглашение об именовании доллара. например.

(function ($) {
  var Book = 'hello';
  $('#bookelement').html(Book);
})(jQuery);

Ответ 7

Все это функции самоисполнения. Теперь дни, также известные как вызывные выражения с мгновенным выражением (IIFE).

Первые два являются точно такими же с немного отличающимся синтаксисом, а третий передает объект parameter как объект jQuery.

Ответ 8

На самом деле все три функции самоисполнения и ti действительно зависят от того, что вам нужно делать.

Единственное различие между 3. 1 и 2 одинаково.

Разница с 3 заключается в том, что вы передаете ссылку на jquery в качестве аргумента. Теперь все функции внутри этой функции annoyomus имеют доступ к jque

Ответ 9

Все это пример функции self invoking.

Это даст вам четкое представление: -

var my_func = function(){
    var internal_var = "Hello";
    return internal_var;
};

var my_func2 = function(name){
    var internal_var = "Hello";
    return internal_var;
};

var long_var_name = "I can be some object or number or object or array";

var result1 = (my_func());
var result2 = (my_func)();
var result3 = (my_func2)(long_var_name);

console.log(result1, result2, result3);

Используя этот пример, вы можете сравнить его с методами Первый, Второй и Третий.