首页 > 解决方案 > JavaScript 中的三种函数声明到底有什么区别?

问题描述

我知道 Javascript 中有 3 种不同类型的函数声明,并且我知道细微的差异,但我不知道为什么它很好,为什么我们需要全部三个?

function MyObject{
    function SomeName(){}

    this.SomeName = function(){}

    var SomeName = function(){} 
}

标签: javascriptfunction

解决方案


function SomeName(){}:你不能指定SomeName为另一件事;函数被提升到最近的函数作用域,允许您在代码中进一步声明它,同时在顶部使用

this.SomeName = function(){}:您公开此功能,以便可以通过以下方式访问它MyObject.SomeName

var SomeName = function(){}:你可以分配SomeName给另一件事;变量名被提升到最近的函数作用域,但在声明之前使用它会导致 SomeName is not a function 错误

只是为了好玩,还有

const SomeName = function(){}:你不能分配SomeName给其他东西;在声明之前使用它会导致 SomeName is not defined 错误

let SomeName = function(){}:你可以分配SomeName给另一件事;在声明之前使用它会导致 SomeName is not defined 错误

偏爱

就个人而言,我倾向于使用export function SomeName(){}但当const SomeName = () => {}我不立即导出该功能时。


推荐阅读