是存储在 JavaScript 中的内存引用的变量
is a variable stored as a memory refrence in javascript?
我读到一个变量在js中存储为内存引用。
所以对于var a = 5
,值为 5
的内存位置被分配给a
。
我尝试在节点上运行它.js:
var a = 5;
var b = {
val: a
};
a = 6;
我希望b.val
6
,但5
,
如果我运行:
var a = 5;
var b = {
val: a
};
var c = {
value: b
}
b.val = 6;
比c.value.val
是6
.
如果它们都是内存对象,为什么输出会有所不同?
在javascript中,当你将一个object
分配给另一个variable
时,它的memory reference
将被共享。它不会创建副本。与此同时,primitive values
将采取与此完全相反的行动。当它被分配给另一个variable
时,它将创建一个副本。
你还必须注意这种奇怪的情况,
var x = { a: 10 };
var y = x;
x = 5;
乍一看,在听到关于对象的基本解释后,每个人(新学习者)都会说,y
将包含5
。但这是错误的。 y
将具有较旧的值,即 {a:10}
.因为在此上下文中,x
的旧引用将被切断,新值将被分配新的内存位置。但是Y
将保留x
给出的参考。
我已经读到一个变量在 js 中存储为内存引用。
嗯,是的,所有变量基本上都是对内存的引用 - 在所有语言中。
所以对于
var a = 5
,值为 5 的内存位置被分配给 a。
我会说"值5
以名称写入内存位置 a
"。
我希望 b.val 是 6 但 5
怎么会这样? … val: a …
表示"从名为 a
的内存位置获取值,并使用它创建名为 val
的属性。存储在那里的值是 5
。
在 JavaScript 中,只有对象是引用更多内存的值(特别是它们各自的属性),并且传递这样的引用值将始终引用同一组属性("对象")。所有其他值 - 所谓的原始值 - 只是不可变的值,没有引用。
相关文章:
- 递归承诺调用 - 内存范围变量问题
- Javascript是否为具有未定义值的变量分配32位内存
- JavaScript 中全局范围内存在未定义变量的原因是什么?
- 变量和数组将在浏览器内存中保留多长时间
- 是存储在 JavaScript 中的内存引用的变量
- 在 javascript 函数和内存管理中声明变量
- 在 JavaScript 中,当一次声明多个变量时,仅使用一个 var 语句是否有内存优势
- 全局变量 VS Web 应用中的本地存储和内存问题
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- 如何在NodeJS中更新内存中的变量
- 内存 同名变量的位置
- 在没有赋值的情况下用var在JavaScript中声明变量会消耗内存吗
- 如何正确释放JavaScript变量的内存
- 在关闭选项卡/窗口之前删除变量是否有助于释放内存?
- JavaScript内存泄漏——不知道如何清除变量
- 如何查看内存中的所有函数和变量(JavaScript)
- 节点是否处于状态?Node可以在内存中维护变量吗?
- JS -工厂模式覆盖私有变量存储在内存中
- 重复变量是否会导致内存泄漏
- 在Javascript中管理内存变量的最佳方法是什么?