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

时间:2018-04-26 20:40:18

标签: javascript variables scope variable-declaration function-parameter

我目前正在研究JavaScript中的变量和范围(来自Kyle Simpson的YDKJS系列),我想我理解编译器如何为变量a"分配内存。如果遇到var a;等显式变量声明,则在适当的范围内。我的问题是:在函数声明的情况下,例如函数foo(a) {...};如果a还没有在其他地方被声明为变量,编译器是否会声明"该变量是否存在于函数的范围内?或者是a"不存在"直到调用函数foo(3);并为a分配值?

对不起,如果这不相关或太基本了。我正在努力完全掌握范围和变量声明的概念,这是我通过做一些研究无法回答或找到的东西。

提前致谢!

2 个答案:

答案 0 :(得分:2)

是的,命名函数参数是一个类似于var a的声明。输入范围(在本例中为函数范围)时,将为所有声明的变量保留内存。然后使用传递的参数(3)初始化 - 如果没有传递参数,则使用undefined

答案 1 :(得分:1)

在调用函数之前,

a不会被分配。你的第二个猜测是正确的。