一、基本数据类型

  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. Windows下Python IDLE设置

    Windows下安装Python 2.7.5,发现IDLE是个不错的IDE,可以编辑.运行, 希望与.py文件关联起来,作为编辑器使用,经过尝试,找到了一个方法.   打开注册表,找到\KEY_CLA ...

  2. 清除Pycharm设置的方法

    Mac 按需运行下面的 rm 删除命令 # Configuration rm -rf ~/Library/Preferences/PyCharm* # Caches rm -rf ~/Library/ ...

  3. C#设计模式之简单工厂模式(过渡模式)

    一.引言 之所以写这个系列,是了为了自己更好的理解设计模式,也为新手提供一些帮助,我都是用最简单的.最生活化的实例来说明.在上一篇文章中讲解了单例模式,今天就给大家讲一个比较简单的模式——简单工厂模式 ...

  4. 操作系统——MiniDos

    #include <stdio.h> #include <string.h> #include <windows.h> ],token[],ch,sa[]; ]={ ...

  5. Executor(一)ExecutorService 线程池

    Executor(一)ExecutorService 线程池 本篇主要涉及到的是 java.util.concurrent 包中的 ExecutorService.ExecutorService 就是 ...

  6. Hadoop 系列(二)安装配置

    Hadoop 系列(二)安装配置 Hadoop 官网:http://hadoop.apache.or 一.Hadoop 安装 1.1 Hadoop 依赖的组件 JDK :从 Oracle 官网下载,设 ...

  7. 关于对象的 width offsetwidth availWidth scrollHeight

    别人总结的.自己记不住,所以留着 了 offsetWidth 包含了对象的边线的宽度width 若你不在html 代码里明确指定这个值,那它的返回值会不一样,如果设置了width 则一样. widht ...

  8. static 和 final

    static是静态修饰关键字,可以修饰变量和程序块以及类方法:当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存:修饰一个程序块的 ...

  9. url地址 参数 带 参数 注意事项 , chain , redirect , redirectAction

    当 url  地址中含有  参数 时 ,若参数值是一个 含有 参数的 地址时 , 应警惕 ,如 index/goIndex!login?backUrl=/shop/goShop!go?a1=1& ...

  10. 2018.10.19 bzoj1057: [ZJOI2007]棋盘制作(悬线法)

    传送门 悬线法板题. 如果只求最大矩形面积那么跟玉蟾宫是一道题. 现在要求最大正方形面积. 所以每次更新最大矩形面积时用矩形宽的平方更新一下正方形答案就行了. 代码: #include<bits ...