Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ребят, зачем некоторые функции пишутся так? (https://javascript.ru/forum/misc/28690-rebyat-zachem-nekotorye-funkcii-pishutsya-tak.html)

nerv_ 30.05.2012 15:42

Цитата:

Сообщение от GuardCat
скобки нужны, чтобы интерпретатор отличил, является ли это объявлением функции (Function declaration) или функцией-выражением (Function expression)

Вариантов может быть множество. Например, еще один
+function() {
    alert( 1 );
}();

Но все-таки, лучше придерживаться одного (как мне кажется).

Цитата:

Сообщение от vflash
еще тоже самое можно делать так

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

melky 30.05.2012 20:10

я частенько делаю так :
1 &&(function(){
    alert(1);
})();

0 &&(function(){
    alert(1);
})();

таким способом, легко выполнить - не-выполнить код в функции.

FINoM 30.05.2012 20:14

Цитата:

Сообщение от melky
таким способом, легко выполнить - не-выполнить код в функции.

Может, проще всё-таки if?

tadjik1 30.05.2012 21:10

оч многие гуру предлагают такой способ:

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


http://bolknote.ru/2012/04/23/~3642/#33 это самое первое место, где вспомнил, но вообще видел в боевом плагине серьезного разработчика. мне кажется, что так и читается лучше.

melky 30.05.2012 22:08

Цитата:

Сообщение от FINoM (Сообщение 177603)
Может, проще всё-таки if?

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

FINoM 30.05.2012 22:29

Цитата:

Сообщение от melky
if - много кода

Ну, function — тоже не мало, а вырубить можно так же: добавив 0& в условие.

9xakep 30.05.2012 22:47

к ТС, еще подобные ф-ии используют в либах, потому что переменные объявленные в такой констркуции, не попадают в глобальную область видимости...вроде так.


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