``function a(){}`可以看作`a = function a(){}`的简写?

时间:2014-04-15 03:29:57

标签: javascript node.js

我在nodejs控制台中做了一系列实验:

> function a(){}
undefined

> a
[Function: a]

> a.name
'a'

> b = function(){}
[Function]               // see, the name is empty

> b.name
''                       // further proof

> b = function b(){}
[Function: b]

> b.name
'b'                      // now b behaves just like it's defined
                         // by "function b(){}"

根据我的测试结果,function a() {}可以作为a = function a() {}的简写。这就像V8内部的引擎一样吗?上述实验中ab之间是否存在差异?

1 个答案:

答案 0 :(得分:-2)

基本上你在a中所做的只是声明函数,而对于b你声明函数并在同一行上再次定义它b。为了证明这一点,您可以尝试以下内容:

a = function b(){}
a.name // results in b

所以你可以避免声明和分配,并像使用a一样简单地声明函数。要回答你的问题,第二种形式是编写第一种形式的更长,不必要的方式。