这两个代码是等价的吗?

时间:2012-01-30 07:16:58

标签: javascript

  

可能重复:
  What is the difference between a function expression vs declaration in Javascript?

我是一名在HTML,ASP.NET方面具有丰富经验的Web开发人员。我知道很少的javascript,足以在网络编程中完成简单的任务。最近,在阅读Jquery和其他复杂的javascript文件时,我一直在观察大量的javascript代码,如下所示:

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

我想知道这在概念上是否与下面相同,我已经习惯了:

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

而且,如果相同,为什么我看到很多使用第一种符号而不是第二种?

3 个答案:

答案 0 :(得分:2)

不同之处在于 var increment = function(x){ return x + 1; }  在脚本块的分析时定义,而在运行时定义function increment(x){ return x + 1; } 看到这个:

<script>
increment();

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

这会给你错误.. .while

<script>

increment();

function increment()
{
}
</script>

不会给你错误。

答案 1 :(得分:-2)

两者都定义函数,但首先还将functionobject存储在变量中,因此可以将其作为参数传递给其他方法。这样的结构在各种环境中都非常有用,比如处理集合 - 你可以分开遍历 走路时收集和做某事,像这样(简化):

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

会在集合上的每个元素上调用函数来做有用的事情

答案 2 :(得分:-2)

基本上两者都是相同的,第一种语法的使用清楚地理解了什么是变量和什么是值,请记住,javascript函数是可以赋值给变量并传递给函数的值

请注意,第二种语法实际上创建了一个var名称增量,而不是一个名为increment的全局变量。