zoukankan      html  css  js  c++  java
  • module2-04-简单类型和复据类型的存储

    简单类型和复杂类型

    一、简单类型和复杂类型的区别

    • 基本类型又叫值类型,复杂类型又叫引用类型

    • 值类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型

    • 引用类型:复杂数据类型,在存储时,变量中存储的仅仅是地址(引用)

    堆和栈

    • JS中没有堆和栈的概念,但是可以用这个来讲解

      • 简单的数据就会存储到栈(复杂类型的引用也会在这里)

      • 复杂类型的数据就会存储到堆(需要人工销毁,现在js有自己的垃圾清除机制)

    • 栈(操作系统):有操作系统自动分配释放,存放函数的参数值,局部变量等

    • 堆(操作系统):存储复杂类型(对象),一般有程序员分配释放,若程序员不释放,由辣鸡回收机制回收

    二、基本类型在内存中的存储

    • 变量中存储的是值本身,如果将变量赋值给另一个变量,是将内部的值赋值一份给另外一个变量,两个变量没有联系,其中一个变化,另外一个不会发生变化

    • 两个空间是独立开的,当讲number赋值给n,其实是将值赋值过去(前提number存储的是简单变量),其中是没有联系的

    三、复杂类型在内存中的存储

    • 如果讲复杂类型的数据赋值给一个变量,复杂类型的数据会在内存中创建一个原型,而变量中存储的是指向对象的一个地址。如果讲变量赋值给另外一个变量,相当于将地址复制一份给了新的变量,两个变量的地址相同指向的是同一个原型,其中一个访问并改变了,另一个变量也会改变

    var p1 = { name: 'zs', age: 18 }
    p2 = p1
    p2.age = 20
    p1 // { name: 'zs', age: 20 }
    p2 // { name: 'zs', age: 20 }
    • 数组也是复杂数据类型,所以数组也有这样的特性

  • 相关阅读:
    Javascript是单线程的深入分析
    非阻塞式JavaScript脚本介绍
    javascript 关于函数的返回值
    javascript运算符的优先级
    JavaScript 中的 this
    javascript中关于坐标 大小 的描述
    Javascript引擎单线程机制及setTimeout执行原理说明
    回车登录页面的问题
    有关架构的若干思考
    Bootstrap3 模态框 select2搜索框无法输入
  • 原文地址:https://www.cnblogs.com/lezaizhu/p/14093742.html
Copyright © 2011-2022 走看看