Страницы

Поиск по вопросам

суббота, 30 ноября 2019 г.

Самовызывающиеся функции JavaScript

#javascript


(function(a){
    alert(a);
}(1));


(function (a) {
    alert(a);
})(1);


В чем отличие этих функций?

Или вот из примера Стефанова:

var result = (function () {
 return 2 + 2;
}());

(function () {
 alert(‘watch out!’);
})();

    


Ответы

Ответ 1



Разницы, в общем-то, нет. Дуглас Крокфорд посчитал что запись: (function () { //body }()); Является правильной, а нотацию: (function () { //body })(); Неправильной и пренебрежительно называет её "собачьи яйца" (dog balls). Поэтому используйте ту, что больше нравится (я, к примеру, согласен с Дугласом, хотя второй вариант ничуть не раздражает). Например в Perl вообще слоганом предписано что всё должно иметь несколько путей нотации. Чем JS хуже? :)

Ответ 2



Исправленный код for (var i = 0; i < 4; i++) { (function(i) {setTimeout(() => console.log(i), 100)}(i)) } Не работает ((i)=>setTimeout(() => console.log(i), 100)(i)) Работает ((i)=>setTimeout(() => console.log(i), 100))(i)

Комментариев нет:

Отправить комментарий