数据的学习理解

纯属小白见解 正在学习js中,不知道说的对错 只是想纪录现在学习时的想法和知识!

数据是存储中代表特定信息的东西

变量 每个变量都对应着一块小内存 变量名就是一个内存的标识 变量名用来查找对应的内存,变量的值就是内存中保存的数据 变量保存的是这个值,这个值 可以是地址值 也可以是基本值

内存 每一个小内存中有2个数据 内部存储的数据 地址值

内存分类 栈 :用来存放全局变量和局部变量

堆:用来存放对象

赋值操作 var a = XXX;

如果xxx是基本数据 a保存的就是这个数据

如果xxx是对象 a保存的就是这个对象的地址值

如果xxx是一个变量 a保存的就是xxx的内存内容(可以是基本数据,可以是地址值)

引用变量赋值问题

2个引用变量指向同一个对象,如果通过一个变量修改对象内部的数据 另外一个变量看到的也是修改后的数据 这两个变量指向的对象一样 地址一样 所以不论那个变量 进行对象内部的数据更改 另外一个看到的也是更改后的对象

2个引用变量指向同一个对象,让其中一个变量指向另一个对象,说明现在这两个变量已经不是同一个地址值了 一个变量还是指向原来的对象 另外一个更改了地址了指向了新的对象

一切皆为数据

1.js引擎管理内存

1.内存的生命周期 首先分配内存空间 有一个内存的地址 得到被分配空间的使用权 存储数据 可以反复进行操作

2.释放内存 局部变量 在函数执行完毕后自动释放

局部变量的指向的对象:称为垃圾对象,等着被浏览器回收器进行回收

内存中 操作的目标:数据

可进行 算术运算 逻辑运算 赋值 运行函数

运行函数时 可以将函数名和调用的括号分开看待 将函数名看作值 调用的括号当作运算符

js调用时传递变量参数时,是值传递还是引用传递?

1.都是值传递 这里的值 可以为基本值 也可以是地址值

2.可能是值传递 也可能引用传递(地址值);引用的是地址地址地址

个人理解 栈内存和堆内存 之前看js基础的时候 那个老师有过一点点的讲解 现在看的js高级 发现自己把栈和堆想的太简单了 原来的理解就是 js的变量都是保存到栈内存中的 这个变量的值 在堆内存中 有一个内存空间地址 这个变量能够通过这个地址获取这个值。

新学习的栈和堆 让我知道 不论是全局变量还是局部变量 都是在栈内存中存在,有的变量直接是数据值而有的为对象地址值 为函数对象地址值,内存中各种操作的都是数据,情况不同 对象指向的地址就不同,要注意函数内对象的=与: 的区别 =号是创建一个对象,:是给这个对象赋值属性,如果前者进入执行 就肯定会改变指向的地址 后者 会添加或者改变地址中存储的属性值。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值