技术交流QQ群:1027579432,欢迎你的加入!

1.简单数据类型与复杂数据类型

  • 简单数据类型也称为基本数据类型或者值类型,复杂数据类型也称为引用类型

    • 值类型:简单数据类型或者基本数据类型,在存储时变量中存储的是值本身。因此,也叫作值类型。string、number、boolean、undefined、null;

      // 简单数据类型null,返回的是一个空的对象
      var timer = null;
      console.log(typeof timer);  // object对象
      // null应用场景:如果有变量以后打算存储为对象,暂时没想好放啥,这时候就给null
      
    • 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型。通过new关键字创建的对象(系统对象、自定义对象,如Object、Array、Date等);

2.堆和栈

  • 堆和栈空间分配的区别:

    • 栈(操作系统):由操作系统自动分配释放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。简单数据类型存放在栈中
    • 堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,。如果程序员不释放,则由垃圾回收机制回收。复杂数据类型存放在堆中
  • JavaScript中没有堆和栈的概念,通过堆栈的方式,更容易理解代码的一些执行方式

3.简单类型的内存分配

  • 值类型(简单数据类型):string、number、boolean、undefined、null;
  • 值类型变量的数据直接存放在变量(栈空间)中;

4.复杂数据类型的内存分配

  • 引用类型(复杂数据类型):通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等;
  • 引用类型变量(栈空间)中存放的是地址,真正的对象实例存放在堆空间中。即首先在栈中存放地址(十六进制表示),然后这个地址指向堆中的数据。

5.简单数据类型传参

  • 函数的形参也可以看成是一个变量,当我们把一个值类型变量作为参数传递给函数形参时,其实是把变量在栈空间中的值复制了一份传给形参,因此在方法内部对形参做任何修改,都不会影响到外部变量;

    // 简单数据类型传参
    function fn(a) {a++;console.log(a);
    }
    var x = 10;
    fn(x);
    console.log(x);
    

6.复杂数据类型传参

  • 函数的形参也可以看成是一个变量,当我们把引用类型变量传递给形参时,其实是把变量在栈空间中保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。

    // 复杂数据类型传参
    function Person(name) {this.name = name;
    }
    function f1(x) {console.log(x.name);  // 刘德华x.name = '张学友';console.log(x.name);  // 张学友
    }var p = new Person('刘德华');
    console.log(p.name);  // 刘德华
    f1(p);
    console.log(p.name);  // 张学友
    

7.资料下载

  • 笔记及代码,欢迎star,follow,fork…

13JavaScript中的简单数据类型与复杂数据类型相关推荐

  1. PHP标量类型中整型类型的,PHP数据类型概述

    在PHP中,有8种基本数据类型和一些伪类型,其中基本数据类型又分为标量类型.复合类型和特殊类型.相对C#,类型少了不少,但同样可实现很多功能,也不比其它语言差. 一.基本类型 1.标量类型(4种) 1 ...

  2. python100个必背知识-python编程面试中必考的知识点,数据类型全解,笔记超全面...

    原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...

  3. JavaScript中的基本数据类型与引用数据类型

    JavaScript中的基本数据类型与引用数据类型 转载自:https://www.cnblogs.com/c2016c/articles/9328725.html 1.栈(stack)和堆(heap ...

  4. python中遍历结构可以是哪些数据类型_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...

    长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...

  5. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  6. JS中的基本数据类型与引用数据类型

    JS中的数据类型可以这样分类: 原始数据类型: number, string ,boolean, undefined, null, symbol 基本类型(简单类型): 值类型: number((整数 ...

  7. python面试必考知识点_python编程面试中必考的知识点,数据类型全解,笔记超全面...

    原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...

  8. [转载] python中set函数是什么数据类型_Python基本数据类型-list-tuple-dict-set详解

    参考链接: Python中的isdisjoint函数 Python基本数据类型-list-tuple-dict-set 数据类型 表示方法 特性 list 列表用方括号表示:[] list是一种有序的 ...

  9. [转载] JAVA中分为基本数据类型及引用数据类型

    参考链接: C++和Java中布尔数据类型的比较 一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型, ...

最新文章

  1. Java的类,对象以及字段和方法
  2. ssh框架实现数据库_自顶向下介绍SSH及其如何实现安全的数据共享
  3. Visual Studio2005入门.Net系列视频教程
  4. 计算机应用基础白雪梅,白雪|
  5. Servlet的学习(三)
  6. CentOS6安装redmine
  7. delete与delete[]的区别
  8. ubuntu小企鹅输fcitx入法乱码问题
  9. 基于Docker的Mysql主从复制
  10. Maven:org.apache.maven.archiver.MavenArchiver.getManifest错误
  11. 微信小程序 云函数 Date时间不对+8小时 设置北京时间
  12. MFC中将view内容保存为bmp
  13. 比夏洛克还厉害:人工智能开始协助警方破案
  14. 关于idea无法使用搜狗输入法打出汉字的解决方案(转)
  15. 关于个人微信公众号开通运营通知
  16. 壁纸最佳分辨率尺寸表
  17. .net对Excel表数据读写操作
  18. 收藏!17 张程序员专属壁纸(使用频率很高)
  19. Java中文与Base64互转(解决中文乱码的问题)
  20. centos8 修改root密码

热门文章

  1. elasticsearch和hadoop集成,gateway.type hdfs设置
  2. 2.javascript之缓存 localStorage 和sessionStorage之间的区别
  3. 搜狗输入法漏洞获取系统权限0day再述
  4. Strom序列化机制
  5. AngularJs在IE10,11中的一个坑。
  6. 浅谈使用SQLBulkCopy批量数据入库
  7. NetBeans 时事通讯(刊号 # 106 - Jun 17, 2010)
  8. linux ftp perl上传脚本
  9. tomcat自启动问题 jsvc的 使用
  10. DevTools 实现原理与性能分析实战