2012-01-30 310 views
1

可能重複:
What is the difference between a function expression vs declaration in Javascript?這兩個代碼是否相同?

我是一個web開發人員在HTML,ASP.NET主要經驗。我知道很少的JavaScript,足以在Web編程中完成簡單的任務。最近,在閱讀jQuery和其他複雜的JavaScript文件,我一直在觀察大量的JavaScript代碼如下:

var increment = function(x){ 
    return x + 1; 
} 

我想知道這下面就是概念一樣,這是我一直比較習慣:

function increment(x){ 
    return x + 1; 
} 

而且,如果相同,爲什麼我會看到大量使用第一個符號而不是第二個?

回答

2

的區別在於
var increment = function(x){ return x + 1; } 在分析時的腳本塊定義的,而function increment(x){ return x + 1; }是在運行時定義的。
看到這一點:

<script> 
increment(); 

var increment = function() 
{ 
} 
</script> 

這會給你錯誤..。而

<script> 

increment(); 

function increment() 
{ 
} 
</script> 

不會給你錯誤。 。

+0

這是*主要*差異,還有其他。 – Quentin 2012-01-30 07:29:34

-2

兩者都定義函數,但首先還將函數對象存儲在變量中,從而可以將它傳遞給其他方法作爲參數。這樣的結構是在各種情況下非常有用,比如處理的集合 - 你可以單獨通過 集合步行和做的事情而走,像這樣(簡化):

function doSomethingWhileIterating(collection, function) { 
     foreach(member in collection) { 
      function(member); 
     } 
} 

將調用函數的每一個元素上收集做comething有用

+0

你可以使用[第二個語法](http://jsfiddle.net/sfNRm/1/) – Quentin 2012-01-30 07:28:08

-2

基本上兩者都是一樣的,使用第一種語法可以清楚地瞭解什麼是變量和值是什麼,請記住,在JavaScript函數中,值可以分配給變量並傳遞給功能。

請注意,第二種語法實際上創建了一個var名稱增量,而不是一個名爲increment的全局變量。