javascript函数声明的核心特性是函数提升和必须命名:函数声明会被整体提升至作用域顶部,允许先调用后定义;语法强制要求函数名,便于调试;具有词法作用域、闭包能力、arguments与this机制,支持return及可选返回值。

JavaScript 函数声明最核心的特性是函数提升(Hoisting)和必须命名,这两点直接影响代码执行顺序和调试体验。
函数提升让调用可以写在声明前面
函数声明会被整个提升到当前作用域顶部,所以可以在定义之前就调用它:
- 引擎先扫描所有
function 函数名() { ... }声明,把它们“搬”到作用域开头 - 因此
sayHello(); function sayHello() { console.log('Hi'); }是合法且能正常运行的 - 注意:这只是函数声明的特性,函数表达式(如
const fn = function() {...})不享受整函数提升,只提升变量声明(fn变量名),值仍为undefined
函数名不可省略,且对调试友好
函数声明语法强制要求写出函数名:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 语法格式固定为
function 名字(参数) { ... },不能写成function(参数) { ... } - 这个名称会出现在浏览器开发者工具的调用栈、错误堆栈中,方便定位问题
- 同一作用域内重复声明同名函数时,后声明的会覆盖前一个(不是报错)
作用域与执行环境绑定在定义时
函数内部访问的变量,取决于它被定义的位置,而不是被调用的位置:
- 哪怕函数在另一个函数里被返回并拿到外部执行,它依然能访问定义时所在作用域的变量(这就是闭包的基础)
- 函数体内的
var声明变量属于函数作用域;let/const声明则形成块级作用域 -
arguments对象默认可用,记录实参列表;this值由调用方式决定(如方法调用、普通调用、call/apply等)
支持 return 语句和可选返回值
函数体中可以用 return 提前结束执行并返回数据:
- 没有
return或return后无值,函数默认返回undefined -
return后面的代码不会执行,但不会报错 - 返回对象字面量时需加括号避免语法歧义:
return { name: 'Alice' }→ 正确;return {name: 'Alice'}在某些换行场景下可能被误解析
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










