JavaScript高级 数据 变量 内存 及相关问题
Posted HUMILITY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript高级 数据 变量 内存 及相关问题相关的知识,希望对你有一定的参考价值。
什么是数据
- 存储在内存中代表特定信息的东西,本质上是0101......
- 数据的特点:可传递,可运算
- 一切皆数据
内存中所有操作的目标:数据
- 算术运算
- 逻辑运算
- 赋值
- 运行函数
什么是内存
- 内存条通电后产生的可存储数据的空间(临时的)
- 内存产生和死亡:内存条(电路板)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
一块小内存的两个数据
- 内部存储的数据
- 地址值
内存分类
- 栈:全局变量 / 局部变量
- 堆:对象
什么是变量
- 可以变化的量,由变量名和变量值组成
每个变量都对应一块小内存,变量名 用来查找对应的内存,变量值就是内存中保存的数据
内存,数据,变量三者的关系
- 内存用来存储数据的空间
- 变量是内存的标识
关于引用变量赋值问题
- 2个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据
2个引用变量指向同一个对象,让其在一个引用变量指向另一个对象,另一引动变量依然指向前一个对象
var obj1 = {name:\'Tom\'}; var obj2 = obj1; obj2.age = 12; consolo.log(obj1.age); //12 function fn(obj){ //obj赋值obj1 obj.name = \'A\'; } fn(obj1); console.log(obj2.name); //A var a = {age:12}; var b = a; a = {name:\'BOB\',age:13}; console.log(b.age,a.name,a.age) //12 Bob 13 function fn2 (obj){ obj={age:15} //{age:15}赋值给obj } fn2(a) console.log(a.age) //13
在js调用函数时传递变量参数是,是值传递还是引用传递
- 理解1:都是值(基本/地址)传递
理解2:可能是值传递,也可能是引用传递(地址值)
var a = 3; function fn (a) { a = a+1; } fn(a) //3赋值给a console.log(a) //3
function fn2 (obj) {
console.log(obj.name);
}
var obj = {name:\'tom\'};
fn2(obj)
JS引擎如何管理内存
1.内存生命周期
- 分配小内存空间,得到使用权
- 存储数据,可以反复进行操作
- 释放小内存空间,
2.释放内存
- 局部变量:函数执行完自动释放
- 对象:成为垃圾对象==>垃圾回收器回收
以上是关于JavaScript高级 数据 变量 内存 及相关问题的主要内容,如果未能解决你的问题,请参考以下文章
javaScript学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)
JavaScript中变量作用域和内存问题(JavaScript高级程序设计第4章)