IIFE с унарным оператором: реальный случай использования

Мы можем претендовать на использование унарного оператора как IIFE, как показано ниже:

+function(){
   return 5;
}();//5


-function(){
   return 5;
}();//-5


~function(){
   return 5;
}();//-6


!function(){
   return 5;
}();//false

Итак, существует ли реальный прецедент для такого IIFE, или нам следует избегать использования IIFE с помощью унарного оператора и просто использовать реальный IIFE:

(function(){
   return 5;
}()); //5

Ответ 1

Моя IDE не удовлетворена тем, что +function():

enter image description here

а также JSLint и JSHint. Лучше избегать подобных конструкций, потому что:

  • они путают читателя
  • они путают IDE и валидаторы
  • вы не можете вернуть что-либо значимое из такого IIFE (например, объект, который, безусловно, является наиболее часто используемым случаем).

Ответ 2

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

Но использование IIFE без оператора - это если я забуду использовать конечную полуточку, которая была бы проблемой.

(function(){
...
}()) //no semi-colon
(function(){
...
}());

Предыдущий код будет интерпретироваться как вызов функции. (первая IIFE будет функцией, которую нужно вызвать, а второй - параметром)


Поскольку из ответа @georg нет значимого возврата из такого IIFE в большинстве случаев использования, я бы выбрал использование IIFE с оператором.