我目前正在研究 JavaScript 中的变量和作用域(来自 Kyle Simpson 的 YDKJS 系列),我想我了解编译器如何在遇到以下情况时在适当的作用域中“为变量 a
分配内存”显式变量声明,例如 var a;
。我的问题是:在函数声明的情况下,例如 function foo(a) {...};
如果 a
尚未在其他地方声明为变量,编译器是否“声明”该变量以便它存在于函数的范围内?还是 a
在函数被调用 foo(3);
并且 a
被赋值之前“不存在”?
抱歉,如果这不相关或者太基础了。我试图完全掌握范围和变量声明的概念,但我无法通过一些研究来回答或找到它。
提前致谢!
最佳答案
是的,命名函数参数是一个声明,就像 var a
一样。进入作用域(在本例中为函数作用域)时,会为所有声明的变量保留内存。然后使用传递的参数 (3
) 对其进行初始化 - 如果未传递任何参数,则使用 undefined
进行初始化。
关于javascript - 在 JavaScript 中 : Is a function parameter variable (at the moment of function declaration) equivalent to declaring a variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051499/