gpt4 book ai didi

javascript - 在 JavaScript 中定义局部函数 : use var or not?

转载 作者:IT王子 更新时间:2023-10-29 02:56:23 25 4
gpt4 key购买 nike

在 JavaScript 中声明局部(内部)函数时,有两种选择:

var关键字声明,赋值给变量:

(function() {
var innerFunction1 = function() { ... };
innerFunction1();
}());

仅使用 function 关键字声明,不分配给变量:

(function() {
function innerFunction2() { ... };
innerFunction2();
}());

我可以看出第二种方法的一个优点:函数可以在调用它的代码下方声明,因此更容易将私有(private)函数与实际执行的代码分开。

它们中的哪一个更好为什么

最佳答案

实际上有3种方法来声明一个函数:

  1. Function declaration : 函数声明定义了一个命名函数变量而不需要变量赋值。函数声明作为独立结构出现,不能嵌套在非功能 block 中。例如:function innerFunction1 () { };

  2. Function expression: : 函数表达式将函数定义为较大表达式语法(通常是变量赋值)的一部分。通过函数表达式定义的函数可以命名或匿名:

    一个。使用匿名函数 - var innerFunction1 = function() { };

    使用命名函数 - var innerFunction1 = function myInnerFunction () { };

  3. Function constructor : 函数构造函数使用 Function( ) 构造函数动态定义函数。请注意,函数体作为字符串参数传递给函数。 var innerFunction1 = new Function (arg1, arg2, ... argN, functionBody)

不推荐第三种方式,因为将函数体作为字符串传递可能会妨碍一些JS引擎的优化,而且容易出错。

函数声明和函数表达式之间的区别很微妙,您应该选择最适合您要求的方法。

我在需要的地方使用函数表达式

  1. a singleton function , 或
  2. 确定以编程方式使用哪个函数(使用命名函数表达式)。

函数声明和函数表达式之间的一些区别是:

  1. 函数表达式允许您在不同的点将不同的函数分配给同一个变量。
  2. 由函数声明定义的函数可以在函数声明本身之前使用(或基本上在当前范围内的任何地方),而由函数表达式定义的函数只能在定义点之后使用。

Click here to read the detailed comparison of Function Declaration vs Function Expression vs Function Constructor @MDN

注意:通过将函数声明分配给 var,可以轻松将其转换为函数表达式。

function foo() {}
alert(foo); // alerted string contains function name "foo"
var bar = foo;
alert(bar); // alerted string still contains function name "foo"

更多阅读:

关于javascript - 在 JavaScript 中定义局部函数 : use var or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439949/

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