Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

javascript 栈内存 堆内存 #30

Open
zhn4 opened this issue Mar 5, 2018 · 0 comments
Open

javascript 栈内存 堆内存 #30

zhn4 opened this issue Mar 5, 2018 · 0 comments

Comments

@zhn4
Copy link
Owner

zhn4 commented Mar 5, 2018

参考
https://juejin.im/entry/589c29a9b123db16a3c18adf

栈内存保存基础数据类型:String,Number,Boolean,Undefined,Null
var a = 20;
var b = a; // 数据复制
b = 30;
console.log(a) // 20

堆内存保存引用数据类型:对象
var m = { a: 10, b: 20 }
var n = m; // 数据引用,指向同一个对象
n.a = 15;
console.log(m.a) // 15

var a = {
  n: 1 // 堆内存地址address_1
}

var b = a // 堆内存地址address_1

a.n = 2// 在堆内存address_1修改

console.log(a.n)// 2

console.log(b.n)// 2
var a = {
  n: 1 // 堆内存地址address_1
}

var b = a

a = {
  n: 2// 重新定义a对象,指向一个新的堆内存address_2
}

console.log(a.n)// 2

console.log(b.n)// 1

接下来看一下这个连=赋值问题

var a = {
  n: 1 // 堆内存地址address_1
}

var b = a // 堆内存地址address_1

a.x = a = { n: 2 }
/*
  a.x = { n: 2 } // 堆内存地址address_1
  a = { n: 2 } // 新的堆内存地址address_2
*/

console.log(a.x)// undefined,堆内存address_2,{ n: 2 }

console.log(b.x)// {n:2},堆内存address_1,{ n: 1, x: { n: 2 } }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant