这两个类定义有什么区别
What the difference between those two class definition?
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没有类,它有对象继承。
相关文章:
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- 什么'这是JS中以下定义方式的区别
- 为Google闭包类定义属性的首选方式是什么
- 定义js函数时冒号的含义是什么
- 什么'获取数组的已定义部分的最快方法是什么?JS
- 定义这些对象有什么区别
- 什么更快?运行空函数或检查函数是否未定义
- [未定义] 和 [,] 有什么区别
- 在jQuery方法中编写自定义属性的正确语法是什么
- 未定义===未定义比较什么
- 如果我们使用:运算符在函数内部定义一个属性,会发生什么
- 检查链接对象形式中未定义属性的最佳实践是什么
- 是'未定义'虚假或什么都没有
- 在 javaScript 中定义函数之前,什么意思是“一个单词:”
- 当生成正态分布的随机值时,定义范围的最有效方法是什么
- 当我单击标记而不是删除它时,我应该做些什么来创建自定义菜单
- 自定义过滤器的问题,我缺少什么
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- 如何在JavaScript中定义“什么都不做”
- 定义的输入没有定义?(什么魔法?)