Вызов функции в вызове другой функции - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь вызвать функцию изнутри вызова другой функции.

Если я так делаю, она работает нормально.Это возвращает 'x':

function returnval() {
    return ("x");
}

alert(
    returnval();
)

Но как я могу сделать то же самое, объявив функцию returnval внутри вызова функции?Я попробовал это, и все остальное, что я мог придумать, безрезультатно.Он возвращает 'function () {return ("x");}) "вместо самого значения," x ":

alert(
    function() {
        return ("x");
    }
)

В том же духе я хотел бы включить операторы ifв вызовах функций.Это вообще возможно?

Любая помощь будет оценена.:)

Ответы [ 5 ]

1 голос
/ 29 марта 2012

alert не является «вызовом другой функции» . Вы передаете функцию в качестве параметра функции. В случае предупреждения это просто предупредит функцию, которая в javascript является объектом. Однако вы можете передать ему результат вызова функции, выполнив следующее:

alert(
    function() {
        return ("x");
    }();
);
1 голос
/ 29 марта 2012

Есть такая вещь, которая называется мгновенным вызовом функции.Вы вызываете функцию сразу после объявления:

(function() {
    // ... function body
})()

upd вот оно: http://www.jspatterns.com/self-executing-functions/

0 голосов
/ 29 марта 2012

Функции являются первоклассными объектами в JavaScript, то есть они могут быть назначены переменным, переданы и сохранены для дальнейшего использования.

Синтаксис, который вы опубликовали, передает саму функцию в alert. Что вы хотите сделать, так это вызвать функцию и передать ее возвращаемое значение в alert:

alert(
    (function() {
        return ("x");
    })() // Invoke the anonymous function
);
0 голосов
/ 29 марта 2012
(function (){
    alert('xxx');
}(); //alert('xxx');

так используйте это так:

alert((function() {
        return ("x");
    })()
);
0 голосов
/ 29 марта 2012

Вам нужно вызвать функцию. что-то вроде

alert(
    (function() {
        return ("x");
    })();
)

Конструкция (function(){})() называется функцией, вызывающей себя.

Если вы не хотите этого делать, вы можете сделать что-то вроде

var f = function() {
  return ("x");
};

alert(f());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...