Эксперты берут объезд! Это не имеет ничего общего с самим закрытием, и я не знаю, как получить название, поэтому я только что собрал номер. Надеюсь, я меня прощу!
Сегодня друг, который только что узнал JS, дал мне кусок кода и спросил меня, почему этот метод не был выполнен. Код заключается в следующем:
Кода -копия выглядит следующим образом:
функция makefunc (x) {
return function () {
возврат x;
}
}
оповещение (MakeFunc (0));
На самом деле, дело не в том, что он не выполняется, а в том, что друг означает, что предупреждение должно быть «0», а не function () {return x;}.
Дело не в том, что сценарий написан неправильно, просто он не понимает возврата, выходит из текущей функции и возвращает значение из этой функции. Если возвращаемая функция является функцией, то сама возвращаемая функция также является самой функцией.
Вы можете изменить приведенный выше код, подобный этому, который является оповещением (makefunc (0) ()):
Кода -копия выглядит следующим образом:
функция makefunc (x) {
return (function () {
возврат x;
}) ();
}
Alert (MakeFunc (0) ());
Если вы хотите вернуть результат выполнения функции, то вы должны сначала позволить функции выполнить, например:
Кода -копия выглядит следующим образом:
функция makefunc (x) {
return (function () {
возврат x;
}) ();
}
оповещение (MakeFunc (0));
Вот анонимная функция.
Кода -копия выглядит следующим образом:
(function () {
возврат x;
}) ();
Внутри первого кронштейна находится анонимная функция, второй кронштейн используется для вызова анонимной функции, и вы можете передать необходимые параметры во втором кронштейне. Например:
Кода -копия выглядит следующим образом:
(function (x, y) {
оповещение (x + y);
})(двадцать три );