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

时间:2012-01-15 06:45:53

标签: javascript

var gem = function() {  
};

function gem() {    
};

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

谁知道哪一个更好?

2 个答案:

答案 0 :(得分:11)

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

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


注意这个......

之间的区别
// TypeError, because the function has not been assigned
gem();

var gem = function() {};

这......

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

function gem(){}

答案 1 :(得分:1)

差别很小。在运行代码之前,function name()语法将被JavaScript解释器“翻译”为var name = function语句。

如果您想了解更多相关信息,我可以推荐这篇文章: Ben Cherry JavaScript Scoping and Hoisting

顺便说一句,请注意,这些是函数,而不是类。 JavaScript没有类,它有对象继承。