我知道Javascript中有3种不同类型的函数声明,并且我知道有细微的区别,但是我不知道为什么这样好,为什么我们需要全部这三种?
function MyObject{
function SomeName(){}
this.SomeName = function(){}
var SomeName = function(){}
}
最佳答案
function SomeName(){}
:您不能将SomeName
分配为另一件事;该函数被提升到最接近的函数范围,允许您在顶部使用时在代码中进一步声明它this.SomeName = function(){}
:公开此函数,以便可以通过MyObject.SomeName
访问它var SomeName = function(){}
:您可以将SomeName
分配给另一件事;变量名称被提升到最近的函数作用域,但是在声明之前使用它会导致SomeName不是函数错误
只是为了娱乐,还有const SomeName = function(){}
:您不能将SomeName
分配给其他东西;在声明之前使用它会导致SomeName未定义错误let SomeName = function(){}
:您可以将SomeName
分配给另一件事;在声明之前使用它会导致SomeName未定义错误
首选项
就个人而言,当我不立即导出函数时,我倾向于使用export function SomeName(){}
,但使用const SomeName = () => {}
。