var gem = function() {
};
function gem() {
};
在我看来他们是一样的。但是我知道这两者之间一定有区别吗?
谁知道哪一个更好?
答案 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没有类,它有对象继承。