博客
关于我
js中数据、内存、变量的概念及三者之间的关系
阅读量:431 次
发布时间:2019-03-06

本文共 1006 字,大约阅读时间需要 3 分钟。

数据、内存、变量的概念及三者之间的关系

数据是什么

数据就是存储在内存中代表特定信息的东西。从底层来看,数据本质上就是许多个0和1组成的。

数据的特点

数据具有可传递性和可运算性。例如:

可传递

var a = 123var b = 123

可运算

var a = 123a += 1

内存是什么

内存是电脑硬件中的内存条在通电后产生的可以用于储存数据的空间,这些空间是临时的(在断电后空间会消失,数据会丢失)。内存的生命周期与内存条的通电状态密切相关。

内存的管理

栈内存与堆内存的作用

栈内存主要存储全局变量、局部变量等基本类型数据。堆内存则用于存储各种对象。

JS引擎如何管理内存

内存的释放机制

  • 全局变量:在浏览器关闭时释放
  • 局部变量:在函数调用结束后自动释放,并由垃圾回收器回收
  • 对象类型数据:需要先成为垃圾对象,然后被垃圾回收器回收

变量是什么

变量用于存储可以变化的值。每个变量都对应一块内存,内存地址唯一标识变量,变量名用于查找对应的内存存储数据。

变量的存储方式

普通类型变量

var a = 123console.log(a)

此时栈内存中开辟了一块存储123的值,变量a对应这块内存。

引用类型变量

var obj = {name: 'Fitz'}console.log(obj)

此时栈内存中开辟了一块存储变量名obj的内存,堆内存中则开辟一块存储对象的内存。

数据、内存、变量的关系

内存用于储存数据,变量作为标识符用于找到对应的内存空间,从而读取数据。

函数传递方式究竟是值传递还是引用传递

实际上,无论变量值是普通类型还是引用类型,函数参数的传递都是基于值的机制。

值传递与引用传递的区别

  • 对于普通类型变量(如数值),函数接收的是该变量的值
  • 对于引用类型变量(如对象),函数接收的是该变量所指的内存地址

例如:

var a = 1var obj = {name: 'Fitz'}function func1(a) { a = a + 1 }function func2(obj) { console.log(obj.name); obj = {name: 'Lx'}; console.log(obj.name) }func1(a) // a变量的值被传递为1func2(obj) // obj变量的值(内存地址)传递给函数

在这种情况下,函数内部对对象的修改不会影响外部的对象值。

转载地址:http://odnuz.baihongyu.com/

你可能感兴趣的文章
pandas DataFrame 中的自定义浮点格式
查看>>
Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
查看>>
pandas 适用,但仅适用于满足条件的行
查看>>
Pandas-通过对列和索引的值求和来合并两个数据框
查看>>
pandas.read_csv()的详解-ChatGPT4o作答
查看>>
Pandas数据可视化怎么做?用实战案例告诉你!
查看>>
Pandas数据结构之DataFrame常见操作
查看>>
pandas整合多份csv文件
查看>>
pandas某一列转数组list
查看>>
Pandas模块,我觉得掌握这些就够用了!
查看>>
Pandas玩转文本处理!
查看>>
pandas的to_sql方法中使用if_exists=‘replace‘
查看>>
pandas读取parquet报错
查看>>
spring5-介绍Spring框架
查看>>
PandoraFMS 监控软件 任意文件上传漏洞复现
查看>>
Parallel.ForEach的基础使用
查看>>
parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
查看>>
ParseChat应用源码ios版
查看>>
PAT 1027 Colors in Mars
查看>>
PAT 1127 ZigZagging on a Tree[难]
查看>>