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 с оператором.