javascript函数与新函数

javascript函数与新函数,javascript,Javascript,根据这个基准, 创建的函数运行速度快约1000倍。你能评论一下吗 您正在调用的是f1,而不是f2。也就是说,你的第二次测试除了查找参考资料外什么也不做 所有的工作实际上都是作为测试的设置来完成的 我想你想要的其实是: 更新:仔细想想,您可能不想要这个。但无论如何,你的第二次测试什么也没做。在f2;)之后缺少()) 因此,除了新函数慢得多之外,维护函数体也更难;) 使用新函数-语法,对于每个函数,JS编译器都必须启动“eval”函数体字符串-这很慢,应尽可能避免: 每次[…]函数构造函数 在表示

根据这个基准, 创建的函数运行速度快约1000倍。你能评论一下吗

  • 您正在调用的是
    f1
    ,而不是
    f2
    。也就是说,你的第二次测试除了查找参考资料外什么也不做
  • 所有的工作实际上都是作为测试的设置来完成的
  • 我想你想要的其实是: 更新:仔细想想,您可能不想要这个。但无论如何,你的第二次测试什么也没做。在
    f2
    ;)之后缺少
    ()


    因此,除了
    新函数
    慢得多之外,维护函数体也更难;)

    使用
    新函数
    -语法,对于每个函数,JS编译器都必须启动“eval”函数体字符串-这很慢,应尽可能避免:

    每次[…]函数构造函数 在表示 源代码,脚本引擎必须 启动转换发动机的机器 源代码转换为可执行代码。这 性能通常很昂贵—— 很容易贵上百倍 而不是简单的函数调用,例如 例子。(马克·塔昆·威尔顿·琼斯)

    如果您使用了StackOverflow上的搜索,您会发现wich提供了非常好的详细信息

    EDIT:就像Martin在下面的一条评论中所说的,有时新函数的构造函数是一件很棒的事情。列举一些例子:

    • 待续

    但是:在99%的情况下,如果你可以使用
    新函数
    ,这是一个坏主意——这意味着:要简单地定义任何函数,它必须像它一样,并且没有某种“动态行为”,你应该始终使用“正常”用于加速代码并避免
    eval
    新函数功能的函数语法

    有缺陷的微基准是有缺陷的。除此之外,您主要是在这里测试
    console.log
    的性能:)您完全正确!!!!!在我的电脑上,它在+/-3%范围内交替运行。有几次我得到了两种情况下完全相同的时间。但是新函数运行得更快!你也看到我看到的了吗?当我运行你的测试时,我得到了
    function(){}
    的“10841858/最快”和
    新函数的“75310/99%较慢”
    -不知道你在说什么。使用“新函数”并不是一个坏习惯-这是一个很棒的工具,在需要时使用-人们在不需要时使用它,这是个坏习惯。说使用“新功能”是不好的习惯就像说“开车是不好的习惯”,因为有些人开车时会撞倒别人。也就是说,新函数比常规函数慢,而且永远都是如此。@Martin:我删除了这句话是因为“过于笼统”——但我想我们同意,在“大多数情况下”,我的意思是“定义一个简单的函数,可以使用
    Function(){}
    -语法完全相同”,
    新函数
    -语法是个坏主意。我同意你的观点,在特殊情况下,这种可能性非常大。@oezi:我们完全同意:)