MST

星途 面试题库

面试题:JavaScript中函数声明方式及作用域特点

请阐述JavaScript中函数声明式、函数表达式以及箭头函数这三种声明方式的语法,并说明它们在作用域方面的特点。
32.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

函数声明式

  • 语法
function functionName(parameters) {
    // 函数体
    return result;
}
  • 作用域特点: 函数声明会提升,即在代码执行之前,函数声明就已经被提升到其所在作用域的顶部,因此在声明之前调用函数是可行的。函数内部创建了一个新的作用域,函数参数和函数内定义的变量都在这个作用域内有效。

函数表达式

  • 语法
const functionName = function(parameters) {
    // 函数体
    return result;
};

也有具名函数表达式的形式:

const functionName = function anotherName(parameters) {
    // 函数体
    return result;
};
  • 作用域特点: 函数表达式不会提升,必须在定义之后才能调用。它同样在内部创建新的作用域,函数参数和内部变量在此作用域有效。具名函数表达式中,anotherName 只能在函数内部访问,外部访问仍然通过 functionName

箭头函数

  • 语法
    • 无参数或多个参数:
const functionName = () => {
    // 函数体
    return result;
};
const functionName = (param1, param2) => {
    // 函数体
    return result;
};
- 单个参数且函数体只有一个表达式时可简写:
const functionName = param => expression;
  • 作用域特点: 箭头函数没有自己的 this 绑定,它的 this 取决于其定义时的外部作用域(词法作用域),不会被调用方式影响。箭头函数也没有 arguments 对象,若要访问参数,需使用剩余参数语法 (...args)。它同样在内部创建新的作用域,但 thisarguments 等特性与传统函数不同。