可能重复:
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){...};
它们完全相同吗?
答案 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() {
}
函数名称主要是两件事。
如上所述,在表达式的情况下,可以省略名称;因此,创建一个所谓的匿名函数
因此,在您的示例中,您有两个函数表达式,其中一个是匿名函数,另一个不是。
另请参阅: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){}
在使用方面没有区别,因此就您的目的而言,它们是相同的。 希望这可以解决它。