gpt4 book ai didi

javascript - 在 JavaScript 中使用 new 运算符声明函数有什么好处?

转载 作者:行者123 更新时间:2023-11-30 12:16:03 25 4
gpt4 key购买 nike

标题说明了一切。

我正在看一本书,在Function 章节中,作者提出使用new 运算符声明函数的优点

但是后来我看到了这样的声明

function myFunction(){
}

在应用程序中经常,而不是声明它,

var myFunction = new Function();

有什么建议吗?

最佳答案

来自MDN description of Function :

Function objects created with the Function constructor are parsed when the function is created. This is less efficient than declaring a function with a function expression or function statement and calling it within your code, because such functions are parsed with the rest of the code.

All arguments passed to the function are treated as the names of the identifiers of the parameters in the function to be created, in the order in which they are passed.

Note: Functions created with the Function constructor do not create closures to their creation contexts; they always are created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the Function constructor was called. This is different from using eval with code for a function expression.

因此,从这里,您可以看到使用 new Function(...) 时的以下差异:

  1. 新函数的代码是一个字符串,在调用 new Function(...) 时解析,而不是在解析页面时解析。例如,您可以构建一个字符串,然后将其用作您的函数体。

  2. 这些函数始终在全局范围内创建,并且不会在创建它们的环境中创建闭包。

  3. 这些函数无法访问父作用域变量。

  4. 您可以动态构建代码,然后将其转换为解析/实时函数 - 有点类似于 eval(),但有一些细微差别。

    <

注意:因为带有new Function(...)构造的函数体必须包含在Javascript字符串中,所以这样写大部分代码很麻烦. new Function(...) 通常只应用于需要动态构建函数体的特殊情况(这可能是一种非常罕见的情况),而不是你知道前面代码的情况时间。

关于javascript - 在 JavaScript 中使用 new 运算符声明函数有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391418/

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