Javascript函数定义

时间:2012-10-21 17:05:51

标签: javascript

  

可能重复:
  Do var fn = function() {…} and var fn = function foo() {…} ever differ?

从这里

What is the difference between a function expression vs declaration in JavaScript?

我知道声明函数和将它们声明为变量之间存在差异。

但目前尚不清楚:

之间是否存在任何差异
var func_name = function(param, param1){...};

var func_name = function func_name(param, param1){...};

它们完全相同吗?

4 个答案:

答案 0 :(得分:3)

在JavaScript中有两种声明函数的方法。

功能声明

函数声明是语句,所以它们以function关键字开头,你必须给函数命名。

这些也在代码执行开始之前解析,因此下面的代码会抛出错误:

foo(); // "foo" exists because it was created at parse time
function foo() {
}

函数表达式

函数表达式 - 如名称 - 表达式。功能 表达式被视为任何其他值(例如数字,字符串等)和 命名它们纯粹是可选的。

表达式中的函数是在运行时创建的,因此下面的代码将 抛出一个期望:

foo(); // "foo" does not exist yes because it will not be created until the line below is executed
var foo = function() {
}

功能名称

函数名称主要是两​​件事。

  1. 调用函数声明
  2. 从函数
  3. 中访问函数对象

    如上所述,在表达式的情况下,可以省略名称;因此,创建一个所谓的匿名函数

    因此,在您的示例中,您有两个函数表达式,其中一个是匿名函数,另一个不是。

    另请参阅:http://bonsaiden.github.com/JavaScript-Garden/#function.general

答案 1 :(得分:1)

答案是“不”。

您始终可以在函数内按名称调用该函数。

var func_name = function other_0func_name(param, param1){
..... ;
other_func_name()};

答案 2 :(得分:0)

答案 3 :(得分:0)

var func_name = function(param, param1){...};

将创建一个匿名函数并分配给变量" func_name"

var func_name = function func_name(param, param1){...};

将创建一个名为" func_name"的函数。然后将该函数分配给变量" func_name"

如果您在控制台中测试这两行,您将看到

var func_name = function(param, param1){};
console.log(func_name)

将给出

function (param, param1){}

var func_name = function func_name(param, param1){};
console.log(func_name)

将给出

function func_name(param, param1){}

在使用方面没有区别,因此就您的目的而言,它们是相同的。 希望这可以解决它。