gpt4 book ai didi

javascript - 匿名函数 VS 常量函数 - javascript

转载 作者:行者123 更新时间:2023-11-30 07:08:06 27 4
gpt4 key购买 nike

从这个讨论开始:

  • What is the most efficient way to declare functions in Javascript?

  • 我对 JavaScript 中的函数声明有疑问。

    通过匿名函数声明,我的意思是这样的( https://en.wikibooks.org/wiki/JavaScript/Anonymous_Functions):
    var myFunction = function (fruit){
    alert('I like ' + fruit);
    }

    const 我的意思是:
    const myfunction = (fruit) => alert('I like ' fruit);

    使用匿名函数还是使用 const 更快?我读过使用 const 可以在 JavaScript 中进行编译优化。有什么理由我应该使用一个而不是另一个?

    这甚至相关吗?

    最佳答案

    Anonymous function VS const function


    估计你在比较
    var func = function() { };
    // or
    let func = function() { };
    const func = function() { };
    这样做的主要原因不是优化。它通过您从未打算更改的代码记录 func ,并让引擎保护您免于意外这样做。 (我还应该注意,从 ES2015 开始, 没有 这些函数是匿名的。它们都有名称 func ,因为 ES2015 添加了为通过“匿名”函数表达式创建的函数分配名称的规则,基于上下文,包括上述简单分配的规则。)
    但关于优化:
    与大多数 JavaScript 优化问题一样,答案是: 这取决于 .理论上,使用 const如果您从未打算更改 func 中的值意味着 JavaScript 引擎可以选择在值永远不会改变的假设下进行优化。请注意,它并不能免除引擎处理符号将在嵌套范围或类似范围内隐藏的可能性。
    引擎是否确实基于该知识以有意义的方式进行优化,值不会改变将取决于引擎的实现,并且可能会因引擎而异。
    这是否使得通过常量查找函数以便调用它比通过变量查找更快也取决于引擎的实现。
    任何绝对差异是否转化为程序中的实际 yield 将取决于上述内容、程序的结构、使用函数的频率、查找时间与函数实际执行的时间的比较(例如,swamping),等等。
    这取决于。 :-)
    如果您遇到您认为查找时间导致实际问题的情况,请对其进行分析并查看它是否有所作为。

    重新编辑:

    By anonymous function declaration I mean something like this:

    function myFunction(fruit){
    alert('I like ' + fruit);
    };

    and by const I mean this:

    const myfunction = (fruit) => alert('I like ' fruit);

    第一个不是匿名函数。这是一个名为 myFunction 的函数,通过函数声明创建。 (作为一个声明,最后不需要 ;。)函数声明不能​​创建匿名函数,名称是声明的必需部分。
    也就是说,这并不重要,因为一旦创建了函数(这与我上面显示的表达式发生在不同的时间),它的行为非常类似于 var func = ...func 为例已解决,是否可以更改 func , 等等。
    您的第二个示例与您的第一个示例不同,而是 重要途径:
  • 它将函数引用分配给一个常量。
  • 它使用箭头函数,而不是 function函数(由于没有更好的术语,我将其称为“简单”函数)。
  • 您的箭头函数版本返回调用 alert 的结果(因为您在箭头函数上使用了 concise body)。您的声明版本没有。

  • 我们已经处理了#1 的任何性能方面。我怀疑,#3 不太重要。
    Re #2(它是一个箭头函数):调用一个箭头函数比调用一个简单的函数需要更少的工作(理论上)。引擎不必设置 arguments伪对象,不必创建 this捆绑。但是如果箭头函数使用 this ,它需要更多的工作来查找它(它就像函数关闭的外部范围中的变量)。但是,这就是理论。只要副作用不明显,引擎就可以优化。例如,如果您不使用 arguments在您的代码中,现代引擎无论如何都会避免创建它,即使对于简单的功能也是如此。我希望围绕 this 的箭头函数使用进行优化挺好的,因为 this他们看到的功能一旦存在就无法改变。
    所以(等一下):这取决于。

    关于javascript - 匿名函数 VS 常量函数 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181804/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com