2012-03-29 164 views
1

我想从另一个函数的调用中调用一个函数。在另一个函数的调用中调用函数

如果我这样做,它可以正常工作。这返回'x':

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

alert(
    returnval(); 
) 

但是我怎样才能做同样的事情,同时在函数调用内部声明returnval函数?我已经尝试了这一点,以及其他所有我能想到的,都无济于事。它返回“功能(){回报(‘X’);})”,而不是本身的价值,“X”:

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

本着同样的精神,我想包括if语句的功能电话也是如此。这是可能吗?

任何帮助,将不胜感激。 :)

+0

真的你需要的是在函数关闭后的'()'。尽管有所有有用的答案,但函数附加的括号不是必需的:-) – Pointy 2012-03-29 18:14:08

+0

@Pointy。告诉'SyntaxError',我得到了,试图像你说的那样执行函数。 – kirilloid 2012-03-29 18:21:59

+0

没有。 'alert(function(){return“Hi”;}());'不是语法错误。当然,你需要alert()函数调用的括号;我的意思是你不需要额外的**层括号。 – Pointy 2012-03-29 18:30:49

回答

1

有一件事,叫做即时函数调用。你调用一个函数只是声明之后:

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

UPD那就是:http://www.jspatterns.com/self-executing-functions/

+0

在函数调用中,您甚至不需要额外的括号,因为语法上下文使'function'关键字明确无误。 – Pointy 2012-03-29 18:12:25

+0

@Pointy〜我每天都会学到新的东西。 :D – 2012-03-29 18:17:59

0

您需要调用该函数。像

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

(function(){})()构造被称为自调用函数。

如果你不想这样做,你可以这样做

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

alert(f()); 
0
(function(){ 
    alert('xxx'); 
}(); //alert('xxx'); 

所以用这样的:

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

函数是JavaScript的第一类对象,意义它们可以被分配给变量,传递并存储以供以后使用。

您发布的语法是将函数本身传递到alert。你想要做的是调用函数,它的返回值传递给alert

alert(
    (function() { 
     return ("x"); 
    })() // Invoke the anonymous function 
); 
1

alert不是“另一个函数的调用”。您将函数作为参数传递给函数。在警报的情况下,这只会警告JavaScript中的对象。你可以通过调用函数的结果做如下操作:

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

Hurray省略了不必要的(无害的)附加括号:-) – Pointy 2012-03-29 18:14:50

相关问题