当前位置:首页 > 问答 > 正文

JavaScript 区别详解 js中函数声明与函数表达式声明的不同之处

🔍 JavaScript函数声明 vs 函数表达式

  1. 语法形式 📝

    • 函数声明function foo() {}(独立语句)
    • 函数表达式const foo = function() {}(赋值给变量)
  2. 提升(Hoisting) 🚀

    JavaScript 区别详解 js中函数声明与函数表达式声明的不同之处

    • 函数声明:整体提升,可在定义前调用。
    • 函数表达式:仅变量名提升,赋值前调用会报错(如TypeError)。
  3. 作用域与块级限制 🧩

    • 函数声明:传统函数作用域,非严格模式下可能跨块级作用域。
    • 函数表达式:受块级作用域限制(如let/const声明时)。
  4. 匿名性 👤

    • 函数表达式:可匿名(如function() {}),或具名(如const bar = function baz() {})。
    • 函数声明:必须具名。
  5. 使用场景 ⚙️

    JavaScript 区别详解 js中函数声明与函数表达式声明的不同之处

    • 函数声明:适合全局或模块级功能定义。
    • 函数表达式:适合动态赋值、回调或IIFE(立即执行函数)。
  6. 调试信息 🐞

    • 具名函数表达式和声明在堆栈追踪中显示名称,匿名表达式显示为<anonymous>
  7. 兼容性 📅

    两者均兼容ES5+,但函数表达式更灵活(如箭头函数变体)。

    JavaScript 区别详解 js中函数声明与函数表达式声明的不同之处

💡 记忆口诀
“声明提升随处跑,表达式需赋值早;块级作用表达式强,匿名回调它更香!”
参考自2025-08前端技术文档及规范更新)

发表评论