JavaScript плюс знак перед именем функции
Я искал информацию о самозваных функциях, и где-то я наткнулся на эту нотацию:
+function(){}
может кто-нибудь объяснить мне, что такое +
знак перед функцией означает/делает?
3 ответа:
это заставляет парсер обрабатывать часть, следующую за
+
как выражение. Это обычно используется для функций, которые вызываются немедленно, например:+function() { console.log("Foo!"); }();
без
+
там, если синтаксический анализатор находится в состоянии, когда он ожидает оператор (который может быть выражением или несколькими невыраженными операторами), словоfunction
похоже на начало функции декларация а не функция выражение и так()
после него (те, что в конце строки выше) будет синтаксическая ошибка (как и отсутствие имени, в этом примере). С the+
, это делает его выражением функции, что означает, что имя является необязательным и что приводит к ссылке на функцию, которая может быть вызвана, поэтому скобки допустимы.
+
это только один из вариантов. Это также может быть-
,!
,~
, или почти любой другой унарный оператор. Поочередно, вы можете использовать круглые скобки (это более распространено, но не более и не менее правильно синтаксически):(function() { console.log("Foo!"); })(); // or (function() { console.log("Foo!"); }());
дочерняя компания к ответу @TJCrowder,
+
обычно используется для принудительного числового литья значения как это так, ответ объясняет. В этом случае он называется "унарный плюс оператор" (для удобства поиска в интернете).var num = +variant;
таким образом, перед функцией это может быть способ заставить результат функции интерпретироваться как число. Я сомневаюсь, что это произойдет еще, но теоретически JIT может использовать это для компиляции функции как числовой функции и т. д. Однако предотвратите унарный плюс, являющийся конкатенацией при использовании в большем выражении, вам понадобятся круглые скобки:
blah + (+(function(){ var scope; return "4"; })());