2012-01-30 285 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的全局变量。