var a = function(){return true;}
var a = function abc(){return true;}
有谁可以向我解释这两者之间的区别是什么?
答案 0 :(得分:4)
这里的不同之处在于
var a = function abc(){return true;}
您正在命名匿名函数。此名称abc
仅适用于函数的内部范围。
<强>更新强>
确实有些实现不遵守惯例......不要指望 IE8 使用它......
答案 1 :(得分:3)
你的两个例子都只是函数表达式 - 意味着你要为变量赋一个表达式(恰好是一个函数)。区别在于一个是匿名的,而另一个是所谓的“命名函数表达式”。 http://kangax.github.io/nfe/对函数声明,表达式和命名表达式之间的区别有很好的概述。简短版本:
答案 2 :(得分:2)
第二个函数是一个命名函数表达式。它可能对递归很有用,例如
// named
var a = function abc(v) { console.log(v); return v>1 && abc(v-1) || v;}
// ^ name abc is known
,b = a
a(3); //=> 3,2,1
b(4); //=> 4,3,2,1
a = function (v) {console.log('value = '+ v);};
b(3); //=> 3,2,1
// versus
var a = function (v) { console.log(v); return v>1 && a(v-1) || v;}
// ^ using a here
,b = a
a(3); //=> 3,2,1
b(4); //=> 4,3,2,1
a = function (v) {console.log('value = '+ v);};
b(3); //=> 'value = 3'