一、基本数据类型

  ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String,也称为基本数据类型,ES6中又增加了一种Symbol。

  基本数据类型是存放在栈(stack)中的简单数据,由stack自动分配内存空间,数据大小确定,他们是直接按值存放的,所以基本数据类型的访问可以直接按值访问,他们会由系统自动释放。任何方法都不能改变基本类型的值,基本类型的比较是值的比较。

  1、undefined类型 ---- 只有一个值,即undefined。当声明的变量未初始化 时,该变量的默认值是undefined; 

    var unType;  //声明变量未赋值
    console.log(unType);  // undefined
    console.log(typeof unType); // undefined
    console.log(unType == undefined); //true
    console.log(unType === undefined); //true

  2、null 类型 ---- 也是只有一个专用值 null,即它的字面量。值undefined实际上是从null派生而来的,因此ECMAScript把它们定义为相等的。
    console.log(null == undefined); // true
    虽然这两个值相等,但它们的含义是不同的,null 用于表示尚未存在的对象,如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

  3、boolean(布尔)类型 ---- 它有两个值 true 和 false(即两个boolean字面量)。

  4、number类型 ---- 既可以表示32位的整数,也可以表示64位的浮点数。

    几个特殊的number值:Number.MAX_VALUE 、Number.MIN_VALUE、Infinity(表示无穷大)、NaN(Not a Number)..........

    具体可学习w3school。

  5、string类型 ---- 字符串类型,是唯一一个没有固定大小的原始类型。

  6、Symbol类型 ---- 表示独一无二的值,通过Symbol函数生成。

二、引用数据类型

  引用数据类型除了上述的基本类型之外就是引用类型了,function、array、object、regex.....(js中出了基本数据类型以外的都是对象)

  引用数据类型是存放在堆(heap)内存中的对象,heap是动态分配的内存,每个空间大小不一样,要根据情况进行特定的配置,也不一定会自动释放。变量保存的是在栈内存中的一个指针(保存的是堆内存中的引用地址),指针指向的是堆内存。在复制引用类型值的时候,其实只复制了指向该内存的地址。引用类型的值是可变的,引用类型的比较是引用的比较,也就是比较两个对象在堆内存中的地址是否相同。
  例1:   

       var object1 = {};

    var object2 = {};
    console.log(object1 == object2); // false
    解析如图:
    
  
例2:

  var a = {name:'Joe',age:18};
  var b = a;
  console.log(b); // { name: 'Joe', age: 18 }
  b.name = "Jack";
  console.log(b.name); // Jack
  console.log(a.name); // Jack
  console.log(a == b); // true
 
       

  学习随笔,如有不周,望请海涵,欢迎小伙伴们各种讨论、指正。

js中的基本类型与引用类型学习的更多相关文章

  1. js中的值类型和引用类型的区别

    1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(String).数值(Number).布尔值(Boolean).Undefined.Null  (这5种基本数据类型是按 ...

  2. js 中的值类型和引用类型

    javascript中值类型(基本类型):number,string,bool,undefined,null(这5种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值) 引用类型:对象(Ob ...

  3. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  4. C# 中的值类型和引用类型

    原文 C# 中的值类型和引用类型 值类型(value type):int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管 ...

  5. C++ : 从栈和堆来理解C#中的值类型和引用类型

    C++中并没有值类型和引用类型之说,标准变量或者自定义对象的存取默认是没有区别的.但如果深入地来看,就要了解C++中,管理数据的两大内存区域:栈和堆. 栈(stack)是类似于一个先进后出的抽屉.它的 ...

  6. C#中的值类型和引用类型,深拷贝,浅拷贝

    from https://www.jianshu.com/p/2d27b06e253f 一.C#中的值类型和引用类型 概念 值类型直接存储其值. 引用类型存储对值的引用. 说起来有些拗口,其本质是Va ...

  7. 浅谈C#中的值类型和引用类型

    在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个 ...

  8. 【.Net】浅谈C#中的值类型和引用类型

    在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个 ...

  9. .NET中的值类型与引用类型

    .NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别? TL;DR(先看结论) 值类型 引用类型 ...

随机推荐

  1. Spring框架的事务管理的基本概念

    1. 事务:指的是逻辑上一组操作,组成这个事务的各个执行单元,要么一起成功,要么一起失败! 2. 事务的特性 * 原子性 * 一致性 * 隔离性 * 持久性 3. 如果不考虑隔离性,引发安全性问题 * ...

  2. ServiceStack支持跨域提交

    //ServiceStack对浏览器有一定的限制 //修改AppHost.cs文件 using Funq;using ServiceStack;using ServiceStackTest.Servi ...

  3. jquery:为动态加载的元素添加点击事件

    jquery:为动态加载的元素添加点击事件 最近在做项目的时候遇到了这样一个问题,给用ajax动态加载出来的内容添加点击事件,但是怎么都触发不了,经过查询试验总结出正确的写法 在jquery1.7之前 ...

  4. c++11多线程学习笔记之四 生产消费者

    #ifndef MY_QUEUE_H__ #define MY_QUEUE_H__ #include<list> #include<mutex> #include<thr ...

  5. 《JavaScript DOM编程艺术》笔记

    1. 把<script>标签放到HTML文档的最后,<body>标签之前能使浏览器更快地加载页面. 2. nodeType的常见取值 元素节点(1) 属性节点(2) 文本节点( ...

  6. PLSQL导入导出表的正确步骤

    PLSQL导入导出表的正确步骤 原来总是直接 tools->import talbes->Oracle Import结果发现有的时候会出错:有的表不能正确导入, 导出步骤: 1 tools ...

  7. smrtlink

    SMRT Link is the web-based end-to-end workflow manager for the Sequel™ System. It includes software ...

  8. jquery 插入节点的方法

    方法 描述 示例 append() 向每个匹配的元素内部追加内容 HTML代码: <p>我想说:</p> jQuery代码: $("p").append(& ...

  9. Linux下timer延时的使用

    http://blog.csdn.net/hzpeterchen/article/details/8090385 因笔者工作在嵌入式平台上(非x386),下面给出的结论仅在arm平台上测试过. 1. ...

  10. 2018.07.23 洛谷P4097 [HEOI2013]Segment(李超线段树)

    传送门 给出一个二维平面,给出若干根线段,求出x" role="presentation" style="position: relative;"&g ...