Вызов выражения функции с именем вне
У меня есть выражение функции в JavaScript, как это:
(function () {
.
//code here
.
.
}());
как я могу вызвать его из другого места, как из другой функции.
Я попробовал это.
var bind = (function () {
//code here...//
}());
и вызвал его в какой-то другой функции, такой как
bind();
или же
new bind();
или же
var b = new bind();
но это не работает Как я могу это исправить?
1 ответ
С этим утверждением:
var bind = (function () {
//code here...//
return 42;
}());
bind
переменная не назначена этой функции. Вместо этого ему присваивается возвращаемое значение непосредственной функции. Так вы получите bind = 42
,
Определить функцию с немедленной функцией
Вы можете захотеть создать функцию внутри непосредственной функции (которая может составить замыкание, если хотите) и вернуть ее для дальнейшего использования. Смотрите пример ниже:
var bind = (function() {
function B(){
// do something
return 42;
}
return B;
}());
bind(); // <-----bind is a B(), so invoke it will return 42
Это потенциально создаст функцию из непосредственной функции и назначит ей bind
переменная, чтобы вы могли вызвать его позже.