javascript - JavaScript 中的三种函数声明到底有什么区别?
问题描述
我知道 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 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 = () => {}
我不立即导出该功能时。
推荐阅读
- linux-kernel - 将 linux 内核模块永久列入黑名单
- javascript - 如何在我的 html 文件中显示 es6 组件?
- docker - 无法弄清楚如何正确使用 cmd 在 docker 中执行脚本
- ruby - 为其他资源操作指定参数名称
- javascript - 提示最近输入的表单值而不提交,而不是 ajax 发布到任何 url
- three.js - Three.js:闪烁的四边形(不在同一个 z 平面上)
- ruby-on-rails - Prawn::Errors::CannotFit: 表格的宽度设置得太小而无法包含其内容
- azure - 未指定目标存储位置的 Uri。请考虑更改请求的位置模式
- c# - 将excel数据直接读入gridview,一列显示255个以上字符的完整数据
- angular - 一个完整的 observable 会发生什么?如果我订阅了一个完整的 observable 怎么办?