使用双括号在Javascript中调用函数

时间:2013-09-14 13:02:33

标签: javascript

当我用双括号调用函数hi()()时,函数会显示hi输出,并且它也会显示错误,hi不起作用。

<html>
    <head></head>
<script>

function hello()
{
    document.write("hello");
}
function hi()
{
    document.write("hi");
    return "hello";
}
hi()();
</script>
</html>

()()与函数名称一起使用是什么意思?

5 个答案:

答案 0 :(得分:8)

如果hi返回了函数而不是其名称,则双括号将非常有用,例如

function hi(){
    return hello;
}
hi()();

这可能是意图的原因。

答案 1 :(得分:6)

()置于评估函数的内容之后将调用该函数。因此,hi()调用函数hi。假设hi返回一个函数,那么hi()()将调用该函数。 例如:

function hi(){
    return function(){return "hello there";};
}

var returnedFunc = hi();  // so returnedFunc equals function(){return "hello there";};
var msg = hi()();         // so msg now has a value of "hello there"

如果hi()未返回任何内容,则hi()()会产生错误,类似于输入"not a function"();1232();之类的内容。

答案 2 :(得分:3)

此函数的返回值是一个不是可调用对象的字符串。

function hi()
{
    document.write("hi");
    return "hello"; // <-- returned value
}

但是如果你想多次调用这个函数,你可以使用for循环或其他东西。

hi()()的示例:

function hi(){
    return function(){ // this anonymous function is a closure for hi function
       alert('some things')
    }
}

JS小提琴:here

如果您想在hello之后立即致电hi,请尝试以下操作:

 function hi()
    {
        document.write("hi");
        return hello; //<-- no quote needed
        // In this context hello is function object not a string
    }

答案 3 :(得分:1)

()()表示调用一个函数,如果返回另一个函数,则第二个括号将调用它。请在下面找到示例:

function add(x){
    return function(y){
        return x+y;
    }
}

加(3)(4)

输出:7

在上面的情况下,add(4)将被调用为add函数,add(3)将被调用为返回函数。这里参数x的值是3,参数y是4.

请注意:我们使用括号进行函数调用。

答案 4 :(得分:0)

您可以使用eval()来执行它,即使它是字符串:eval(hi()+'()');