函数声明与匿名函数声明的异同

冷漠man

冷漠man

2026-07-13

426人浏览

原创

函数声明有名字、可提升,能提前调用;匿名函数实为函数表达式,无名、不提升,需赋值或括号包裹才能使用;命名函数表达式兼顾二者特性。

函数声明与匿名函数声明的异同

函数声明和匿名函数声明在 JavaScript 中看起来相似,但本质不同:前者是独立语句,有名字、可提升;后者是表达式的一部分,无名、不可提前调用。

核心区别在于“有没有名字”和“能不能提前用”

函数声明必须带函数名,例如 function sayHi() { }。它会被 JavaScript 引擎自动提升(hoist)到作用域顶部,所以可以在声明前调用。

匿名函数声明本身不合法——function() { } 单独写会报语法错误。真正能用的,是把它作为值赋给变量或参数,比如 const sayHi = function() { };,这时它才成为函数表达式,而“匿名”仅指函数自身没有 name 属性。

Memories.ai
Memories.ai

专注于视频解析的AI视觉记忆模型

下载

函数声明的特点

  • 语法形式固定:function 名称(参数) { 函数体 }
  • 自动提升:声明前就能调用,引擎先扫描并注册所有函数声明
  • 函数名可见且可用于递归或调试,sayHi.name 返回 "sayHi"
  • 不能紧跟括号立即执行,function foo(){}() 不会调用,只解析函数

匿名函数(实际是函数表达式)的特点

  • 必须出现在表达式位置:赋值给变量、传入参数、放在括号里等
  • 不会提升:必须定义后才能调用,否则报 TypeError: xxx is not a function
  • 函数本身无名:(function(){})().name 是空字符串,但可被变量名间接引用
  • 支持立即执行:(function(){ console.log('run'); })();!function(){ }();

命名函数表达式是个折中方案

你也可以写 const sayHi = function realName() { }; ——外层是变量名,内层是函数自己的名字。这个 realName 在函数内部可用(比如递归),外部不可见,sayHi.name 仍返回 "realName"

说到底,是否具名、是否提升、是否可立即执行,这三点决定了该用哪一种写法。业务逻辑主入口常用函数声明,回调、闭包、模块封装多用函数表达式。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
go语言闭包相关教程大全
go语言闭包相关教程大全

本专题整合了go语言闭包相关数据,阅读专题下面的文章了解更多相关内容。

2025.07.29

1715

19

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.04

1389

5

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

2023.10.07

253

5

Qt Creator按钮响应设置方法
Qt Creator按钮响应设置方法

信号槽是 Qt 开发的核心机制。本专题整理 Qt Creator 中按钮点击、菜单触发、输入变化、窗口事件、自定义信号、自动连接槽函数和手动 connect 写法,帮助用户理解界面控件如何和 C++ 代码联动。

2026.08.05

0

10

Qt Creator新建项目使用教程
Qt Creator新建项目使用教程

本专题整理 Qt Creator 新建项目、打开已有工程、项目模板选择、目录结构、源文件管理、构建目录、运行配置和项目迁移方法,重点解决新手不知道选 qmake 还是 CMake、项目打不开、文件不参与编译等常见问题。

2026.08.05

0

10

maven常用插件使用大全
maven常用插件使用大全

PHP中文网精心整理Maven主流插件用法合集,涵盖编译、测试、打包等常用插件使用大全。从基础配置到进阶实战,详细解析各插件功能与适用场景,助你轻松掌握Maven自动化构建,解决Java项目开发痛点,是开发者必备的实用指南。

2026.08.05

0

31

PyCharm快速入门指南
PyCharm快速入门指南

本专题汇总了PyCharm快速入门的全套指南与教程,涵盖从官网下载安装、创建第一个Python项目、配置虚拟环境,到代码编辑、运行调试等基础操作,并整理了版本控制(Git)集成、常用高效快捷键及实用插件等进阶技巧,助你快速上手这款高效的Python IDE。

2026.08.05

2

17

PyCharm运行程序教程大全
PyCharm运行程序教程大全

本专题汇总了PyCharm运行程序的多种方式与详细操作步骤,涵盖通过主菜单Run、点击工具栏绿色三角图标、使用快捷键Shift+F10(或Ctrl+Shift+F10)等基本运行方法,以及配置运行/调试参数、设置PYTHONPATH环境变量、管理多脚本运行与交互式Python控制台调试等进阶技巧,助您全面掌握在PyCharm中高效运行与管理Python程序的方法。

2026.08.05

0

14

Maven零基础入门教程
Maven零基础入门教程

本合集由PHP中文网精心整理,提供Maven零基础入门到完整使用的保姆级教程。内容涵盖环境安装、核心配置、仓库管理及项目构建等核心知识点。通过详细步骤解析与代码示例,助你快速掌握Maven的依赖管理与自动化构建,轻松解决Java项目中的各种痛点,是新手入门与进阶的必备指南。

2026.08.05

2

18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习