MST

星途 面试题库

面试题:JavaScript 函数构造函数性能优化之基础认知

在 JavaScript 中,使用 Function 构造函数创建函数和使用函数声明或函数表达式创建函数,在性能上有什么主要区别?请简要阐述。
18.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. Function 构造函数
    • 性能劣势:使用 Function 构造函数创建函数会导致性能下降。这是因为 Function 构造函数创建函数时,其函数体的字符串是在运行时被解析和编译的。每次调用 Function 构造函数都会触发新的解析和编译过程,这增加了额外的开销。例如:
    const newFunction = new Function('a', 'b', 'return a + b');
    
    这里的字符串 'a', 'b','return a + b' 在运行时才被解析成可执行的代码,相比其他创建函数的方式,多了运行时解析编译的步骤。
  2. 函数声明和函数表达式
    • 性能优势:函数声明和函数表达式在代码解析阶段就被解析和编译了。它们的代码在脚本加载和解析时就被预处理,后续调用时直接执行,不需要像 Function 构造函数那样在运行时再次解析编译。例如函数声明:
    function add(a, b) {
        return a + b;
    }
    
    以及函数表达式:
    const add = function(a, b) {
        return a + b;
    };
    
    这两种方式在脚本加载解析时就处理好了,执行效率更高。

总的来说,从性能角度考虑,应优先使用函数声明或函数表达式,而不是 Function 构造函数来创建函数。