2012-09-15 113 views
1
var avg = function() 
    { 
    var sum = 0; 
     for (var i = 0, j = arguments.length; i < j; i++) 
     { 

      sum += arguments[i]; 
     } 
     return sum/arguments.length; 
    } 

當我嘗試調用此類似:如何調用匿名Javascript函數?

var average = avg(2,3,5); 
average; // It works fine; 

但是我怎麼稱呼它不分配給一個變量? 如果有人可以提出任何建議,它將是愉快的..謝謝。

+0

你在JavaScript控制檯嘗試和希望看到結果? – phant0m

回答

2

你會簡單地調用它像這樣:

avg(2, 3, 5); 

如果你想看到的結果,把它放在一個警告電話:

alert(avg(2, 3, 5)); 
+0

謝謝,您的建議。你能告訴我如何使用這個功能像一個JavaScript閉包。 –

+0

對不起。 「javascript閉包」是什麼意思? – 0x499602D2

+0

函數makeAdder(a)返回函數(b){ 返回a + b; } } x = makeAdder(5); y = makeAdder(20); x(6); //我的意思是這個Javascript關閉,我不知道它是什麼名字。也許我錯了! –

0

你並不需要把通過在變量中調用函數的結果,您可以隨心所欲地執行任何操作。

例如,在一個警報用它作爲值:

var message = "The average is " + avg(2,3,5); 

可以在另一個呼叫直接使用它:

alert(avg(2,3,5)); 

可以在另一個表達式中使用它

someFunction(avg(2,3,5)); 

你甚至可以通過不做任何事情來拋棄結果,即使這在這個sp中沒有用處ecific情況:

avg(2,3,5); 
0

如果你不把結果到一個變量或兼容的情況下,該功能不能輸出任何東西,這使得它很難使用,除非你把它輸出的結果。試試這個:

var avg = function() 
    { 
    var sum = 0; 
     for (var i = 0, j = arguments.length; i < j; i++) 
     { 

      sum += arguments[i]; 
     } 

     var retvalue = sum/arguments.length; 
     consoloe.log("avg: "+retvalue); 
     return retvalue ; 
    } 

然後它可以幫助你看看什麼時候該函數被調用或不。

0

您需要理解表達式的概念。

每個表達式作爲一個整體表示一個的值。表達式可以由多個以某種方式組合的子表達式組成(例如,與運算符一起)以產生新的值。

例如:

  • 3是表示數值3的表達式(文字,具體而言)。
  • 3 + 4是一個表達式,由兩個文本表達式,即作爲一個整體產生了值7

當一個分配給一個變量–如var average = –的右手側操作員需要是一個表達式,即產生一個值的東西。

正如您所觀察到的,average將被賦值五。因此,avg(2, 3, 5)本身必須是一個表達式,其值爲5

average本身是一個表達式,表示所述變量的當前值。

最重要的是,avg()var average =沒有任何關係。 avg()站在它自己的位置,你可以認爲它像一個普通的價值,如5(當然還有其他差異)。

如果你明白的表達和價值的概念,它應該清楚,如果你能做到

var average = avg(2,3,5); 
average; // It works fine; 

你也可以做

avg(2,3,5);