我是编程新手,无法找到任何有关参数/自变量,它们如何在后台工作的很好的解释。例如:
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
之类的功能吗?
很抱歉,这个问题不好或很愚蠢。
答案 0 :(得分:2)
您将需要查看编译后的代码,而不是该解释后的代码,以进一步了解它,因为您甚至在这里都不处理寄存器。
假设它的工作方式与c ++相同(可能相似),则在调用函数时,函数参数被压入当前堆栈。然后,函数根据数量从堆栈中读取值,并读取/写入这些值。
在已编译的代码中,将不存在诸如“ a”变量之类的东西。只有有限数量的寄存器可用,因此a实际上将是其中之一。在分配该值之前,该寄存器中的值将被压入堆栈,以便函数结束时,该寄存器可以返回到之前调用该函数之前可能正在使用的运行代码的先前值。
答案 1 :(得分:0)
在这种情况下,JavaScript将对函数a * 10
的引用复制到变量a
中。因此a
是a * 10
,因此a * 10
将被评估并返回。