代码之家  ›  专栏  ›  技术社区  ›  Diego Arias Fuentes

在JavaScript中:函数参数变量(在函数声明时)是否等同于声明变量?

  •  1
  • Diego Arias Fuentes  · 技术社区  · 6 年前

    我目前正在研究JavaScript中的变量和作用域(来自Kyle Simpson的YDKJS系列),我想我理解编译器如何“为变量分配内存 a 如果遇到显式变量声明,如 var a; .我的问题是:在函数声明的情况下,例如函数 foo(a) {...}; 如果 A. 还没有在其他地方声明为变量,编译器是否“声明”该变量以使其存在于函数的作用域中?还是这样 A. 调用函数之前“不存在” foo(3); A. 是否指定了值?

    抱歉,如果这不相关或太基本。我正试图完全理解范围和变量声明的概念,而这是我通过做一些研究无法回答或发现的。

    提前感谢!

    2 回复  |  直到 6 年前
        1
  •  2
  •   Bergi    6 年前

    是的,命名的函数参数是一个声明,就像 var a 是输入作用域(在本例中为函数作用域)时,将为所有声明的变量保留内存。然后用传递的参数初始化( 3 )-或与 undefined 如果未传递任何参数。

        2
  •  1
  •   Geuis    6 年前

    a 在调用函数之前不会分配。你的第二个猜测是正确的。