JavaScript参数是何时、如何定义的?

问题如图所示:

clipboard.png

定义一个函数,函数的形参为arg,运行函数时,打印这个参数,返回的结果为undefined,这说
明,参数arg在函数中已经声明,但是没有被赋值,所以才会输出undefined。我想知道的是,这个
参数是何时被定义的以及如何被定义的,如果给test函数传递一个实参,那么实参的值是如何传递给这个形参的?没有有关于函数参数的规范标准可以查阅?

阅读 3.2k
4 个回答

是在变量对象被创建的时候定义的。
变量对象的创建过程分为:

  1. 建立arguments对象。检查当前上下文中的参数,建立该对象下的属性与属性值。

  2. 检查当前上下文的函数声明,也就是使用function关键字声明的函数。在变量对象中以函数名建立一个属性,属性值为指向该函数所在内存地址的引用。如果函数名的属性已经存在,那么该属性将会被新的引用所覆盖。

  3. 检查当前上下文中的变量声明,每找到一个变量声明,就在变量对象中以变量名建立一个属性,属性值为undefined。如果该变量名的属性已经存在,为了防止同名的函数被修改为undefined,则会直接跳过,原属性值不会被修改。

更多信息点击这里了解

希望我的回答能帮助到您^_^

这个arg参数是你创建函数的时候定义的啊,你是在问JS底层怎么运行吧?

就是调用test3()时定义的。只是你没有传参,所以是undefined

推荐问题