我是编程新手,无法找到任何有关参数/自变量,其工作原理的良好解释。例如:
function changeStuff(a) {
return a = a * 10;
}
var num = 10;
console.log(changeStuff(num)); //prints 100
console.log(num); //prints 10
当我调用此
changeStuff
函数时,javascript如何将变量num放入参数-a中?它在后台执行a = num
之类的功能吗?很抱歉,这是一个不好的问题还是一个愚蠢的问题。
最佳答案
您可能需要查看编译后的代码,而不是此解释后的代码,以进一步了解它,因为您甚至不在这里处理寄存器。
假设它与c ++的工作方式相同(可能相似),则在调用函数时,函数参数被压入当前堆栈。然后,函数根据数量从堆栈中读取值,然后函数读取/写入这些值。
在已编译的代码中,将不存在“ a”变量之类的东西。只有有限数量的寄存器可用,因此a实际上是其中之一。在分配该值之前,该寄存器中的值将被压入堆栈,以便函数结束时,该寄存器可以返回到之前调用该函数之前可能正在使用的运行代码的先前值。
A bit of literature on the subject