那两个类的定义有什么区别?

Ada*_*Lee 2 javascript

var gem = function() {  
};

function gem() {    
};
Run Code Online (Sandbox Code Playgroud)

在我看来他们是一样的.但我知道这两者之间一定有一些区别吗?

谁知道哪一个更好?

小智 11

第一个是匿名函数,它是赋值表达式的一部分.该功能在分配时创建.

第二个是函数声明.它是"悬挂的",这意味着它的创建在任何表达式评估之前就会发生.


注意这个...之间的区别

// TypeError, because the function has not been assigned
gem();

var gem = function() {};
Run Code Online (Sandbox Code Playgroud)

还有这个...

// Works because the function declaration was hoisted.
gem();

function gem(){}
Run Code Online (Sandbox Code Playgroud)