这两个类定义有什么区别

What the difference between those two class definition?

本文关键字:定义 什么 区别 两个      更新时间:2023-09-26
var gem = function() {  
};
function gem() {    
};

在我看来,它们是相同的。 但我知道这两者之间一定有什么区别吗?

有谁知道哪一个更好?

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

第二个是函数声明。它是"吊装"的,这意味着它的创建发生在任何表达式被评估之前。


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

// TypeError, because the function has not been assigned
gem();
var gem = function() {};

而这...

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

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

如果你想了解更多,我可以推荐这篇文章:Ben Cherry 的 JavaScript Scopeping and Hoisting。

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