博客
关于我
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/

你可能感兴趣的文章
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>
node.js安装方法
查看>>
Node.js官网无法正常访问时安装NodeJS的方法
查看>>
Node.js的循环与异步问题
查看>>
Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
查看>>
nodejs + socket.io 同时使用http 和 https
查看>>
NodeJS @kubernetes/client-node连接到kubernetes集群的方法
查看>>
Nodejs express 获取url参数,post参数的三种方式
查看>>
nodejs http小爬虫
查看>>
nodejs libararies
查看>>
nodejs npm常用命令
查看>>
Nodejs process.nextTick() 使用详解
查看>>
NodeJS 导入导出模块的方法( 代码演示 )
查看>>
nodejs 的 Buffer 详解
查看>>
nodejs 读取xlsx文件内容
查看>>
nodejs 运行CMD命令
查看>>