In JavaScript: 一个函数参数变量(在函数声明的那一刻)是否等同于声明一个变量?
In JavaScript: Is a function parameter variable (at the moment of function declaration) equivalent to declaring a variable?
我目前正在研究 JavaScript 中的变量和范围(来自 Kyle Simpson 的 YDKJS 系列),我想我了解编译器 "allocates memory for a variable a
" 在遇到显式变量声明时如何在适当的范围内比如var a;
。我的问题是:在函数声明的情况下,例如 function foo(a) {...};
if a
hasn't been declared as a variable yet, does the compiler "declare" that variable so it exists in函数的范围?还是a
"doesn't exist"直到函数调用foo(3);
,a
赋值?
抱歉,如果这不相关或者太基础了。我试图完全掌握作用域和变量声明的概念,但我无法通过一些研究来回答或找到它。
提前致谢!
a
在函数被调用之前不会被赋值。你的第二个猜测是正确的。
是的,命名函数参数是一个声明,就像 var a
一样。进入作用域(在本例中为函数作用域)时,会为所有声明的变量保留内存。然后使用传递的参数 (3
) 进行初始化 - 如果未传递任何参数,则使用 undefined
进行初始化。
我目前正在研究 JavaScript 中的变量和范围(来自 Kyle Simpson 的 YDKJS 系列),我想我了解编译器 "allocates memory for a variable a
" 在遇到显式变量声明时如何在适当的范围内比如var a;
。我的问题是:在函数声明的情况下,例如 function foo(a) {...};
if a
hasn't been declared as a variable yet, does the compiler "declare" that variable so it exists in函数的范围?还是a
"doesn't exist"直到函数调用foo(3);
,a
赋值?
抱歉,如果这不相关或者太基础了。我试图完全掌握作用域和变量声明的概念,但我无法通过一些研究来回答或找到它。
提前致谢!
a
在函数被调用之前不会被赋值。你的第二个猜测是正确的。
是的,命名函数参数是一个声明,就像 var a
一样。进入作用域(在本例中为函数作用域)时,会为所有声明的变量保留内存。然后使用传递的参数 (3
) 进行初始化 - 如果未传递任何参数,则使用 undefined
进行初始化。