2013-05-20 103 views
2
var add = function addnums(a,b) 
{ 
    return a+b; 
} 
alert("sum is " + addnums(10,20)); 

爲什麼我不能直接在上面的Javascript中使用addnums? PS:我知道其他選擇,問題是爲什麼上述指定的方法不起作用。Javascript函數定義錯誤

+0

你可以有兩個名字....? –

+0

好問題:)我期望它能以你的方式工作。這樣你就可以通過'addnums(1,2)'和'add(1,2)'調用函數。 – sdepold

+2

addnums()不會在外部作用域中可見,其名稱函數表達式 –

回答

0

你可以。

var add = function addnums(a,b) 
{ 
    return a+b; 
} 
alert("sum is " + (function(a,b) { return a+b; })(10,20)); 

另外,您可以縮短語法:

var addnums = function(a,b) { ... } 

function addnums(a,b) { ... } 
+1

由於所有答案都在此處接收到快速降維,請解釋原因。 –

+0

我知道其他方法可以使這項工作,只是想知道爲什麼有問題的方法不起作用 – nik7

+1

你沒有回答這個問題。問題在於爲什麼函數在聲明後不能被稱爲'addnums'。 – JJJ

-1

你有一個錯誤寫函數編寫如下:

var addnums = function(a,b) 
{ 
    return a+b; 
} 
alert("sum is " + addnums(10,20)); 

:)

var add;是一個聲明。這裏add是聲明和賦值的函數,你不需要在關鍵字函數之後命名該函數,當你用這種方式定義一個函數時,變量名將採用函數名。我想你現在明白了。

+3

除了事實上,提問者代碼的語法是正確的,他想知道爲什麼指定的函數不能通過其名稱進行調用。 – sdepold

+0

函數表達式不需要名稱,即使命名它也不會被該名稱調用。這是匿名的。你可以說這是一個缺點,但有更多的優點而不是缺點。看看這個鏈接http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ –

相關問題