在javascript中,变量内存分配是如何在函数对象内部进行的?

在javascript中,变量内存分配是如何在函数对象内部进行的?,javascript,closures,Javascript,Closures,变量的作用域、初始化和在javascript函数内外使用如何?我编写了以下代码: var计算器=函数 { var x=5; getx=函数{ 返回x; } 返回{x:x,getx}; }; document.getElementByIdoutput.innerHTML=calculator.x; 计算器x=10; document.getElementByIdoutput.innerHTML+=+calculator.x++calculator.getx; 将x添加到函数的属性 calcula

变量的作用域、初始化和在javascript函数内外使用如何?我编写了以下代码:

var计算器=函数 { var x=5; getx=函数{ 返回x; } 返回{x:x,getx}; }; document.getElementByIdoutput.innerHTML=calculator.x; 计算器x=10; document.getElementByIdoutput.innerHTML+=+calculator.x++calculator.getx; 将x添加到函数的属性 calculator现在引用对象{x:x,getx},您正在更改的值不是变量x,而是calculator的属性x 要访问属性中的更改,您需要输出此.x

var计算器=函数 { var x=5; getx=函数{ 归还这个.x; } 返回{x:x,getx}; }; document.getElementByIdoutput.innerHTML=calculator.x; 计算器x=10; document.getElementByIdoutput.innerHTML+=+calculator.x++calculator.getx;
预期的结果是什么?10正如我在lastx中提到的那样,计算器立即调用函数中的x是5可能这是我正在寻找的,但没有得到返回x与返回this的区别。x?x被添加到计算器的属性中,但getx访问的x是其中定义的变量,您正在更改属性,但变量保持不变。我得到了第二个示例,其中您正在使用set,但仍然没有得到在第一个示例中使用此关键字的原因。。这个.x如何使它返回添加的属性,即x值??检查,这表明您所引用的x实际上是对象计算器的属性,而不是内部变量返回{x:x,getx}为计算器生成一个属性x,因为您现在引用的对象是{x:x,getx},内部变量保持不变,因此当您访问它时,它返回5,但当您在第二个示例中使用setx将其专门设置为10时,它会发生变化
calculator.x = 10