2012-03-29 163 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

相關問題