JavaScript 基础深入——数据、变量、内存

栏目: JavaScript · 发布时间: 6年前

JavaScript 基础深入——数据、变量、内存

什么是数据?

  • 存储在内存中代表特定信息的,本质上是0100101.....
  • 数据的特点:可传递、可运算
  • 一切皆数据
  • 内存中所有操作的目标:数据

    • 算术运算
    • 逻辑运算
    • 赋值运算
    • 运行函数

什么是内存?

  • 内存条通电后产生的可储存数据的空间(临时的)
  • 内存的产生和死亡:内存条(电路板)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
  • 一块小内存的2个数据:

    • 内部存储的数据
    • 地址值
  • 内存分类:

    • 栈:全局变量 / 局部变量
    • 堆:对象

什么是变量?

  • 可变化的量:变量名和变量值组成

    • 变量名
    • 变量值
  • 每个变量都对应一块小内存:

    • 变量名:用来查找对应的内存,
    • 变量值:就是内存中保存的数据

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

  • 内存是用来存储数据的空间
  • 变量是内存的标识

关于引用变量赋值的问题

  • 2 个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的就是修改后的数据。

JavaScript 基础深入——数据、变量、内存

  • 2 个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个变量依然指向前一个对象。

JavaScript 基础深入——数据、变量、内存

几个易错问题

问题1

var a = xxx , a 内存中到底保存的是什么?

  • xxx 是基本数据,a 内存中保存的就是这个数据
  • xxx 是对象,a 内存中保存的是对象的地址值
  • xxx 是一个变量,保存 xxx 的内存内容(可能是基本数据,也可能是地址值)

问题2

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

  • 理解1:都是值(基本值/地址值)传递
  • 理解2:可能是值传递,也可能是引用传递(地址值)

JavaScript 基础深入——数据、变量、内存

问题3

js 引擎如何管理内存?

  • 内存生命周期

    • 分配小内存空间,得到它的使用权
    • 存储数据,可以反复进行操作
    • 释放小内存空间
  • 释放内存

    • 局部变量:函数执行完自动释放
    • 对象:成为垃圾对象==>垃圾回收器回收
var a = 3
var obj = {}
obj = undefined

function fn () {
  var b = {}
}

fn() // b是自动释放, b所指向的对象是在后面的某个时刻由垃圾回收器回收

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链核心算法解析

区块链核心算法解析

【瑞士】Roger Wattenhofer(罗格.瓦唐霍费尔) / 陈晋川、薛云志、林强、祝庆 / 电子工业出版社 / 2017-8 / 59.00

《区块链核心算法解析》介绍了构建容错的分布式系统所需的基础技术,以及一系列允许容错的协议和算法,并且讨论一些实现了这些技术的实际系统。 《区块链核心算法解析》中的主要概念将独立成章。每一章都以一个小故事开始,从而引出该章节的内容。算法、协议和定义都将以形式化的方式描述,以便于读者理解如何实现。部分结论会在定理中予以证明,这样读者就可以明白为什么这些概念或算法是正确的,并且理解它们可以确保实现......一起来看看 《区块链核心算法解析》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具