深入了解 JS(1)

137 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

前端最重要的三大基础(前端三剑客),HTML CSS JAVASCRIPT,学习前端必学的三门基础知识点。

特别是JavaScript,这个基础必须是要最扎实的,不管在哪个项目中,前端都不会离开他的,所以我们要打牢它的基础。学习完基础后JavaScript的深入学习也是必不可少的,从这节开始,浅浅的说一下JavaScript深入的知识点,大概会从下面几个方面来说:

  • JavaScript 基础深入
  • 函数
  • 面向对象
  • 线程机制与事件机制

JavaScript 基础深入

1. 类型

JavaScript的几大数据类型大家应该都清楚,主要是分两大类,基本(值)类型,对象(引用)类型,简单列一下

  • 基本(值)类型

    • Number: 任意数值
    • String: 任意文本
    • Boolean: true/false
    • undefined: undefined
    • null: null
  • 对象(引用)类型

    • Object: 一般对象类型
    • Array: 特别的对象类型(下标/内部数据有序)
    • Function: 特别的对象类型(可执行)

判断JavaScript类型

根据分类大概会分为三种判断方法

  • typeof:

    • 可以区别: 数值, 字符串, 布尔值, undefined, function
    • 不能区别: null与对象, 一般对象与数组
  • instanceof

    • 用来判断对象数据的类型: Object, Array与Function
  • ===

    • 可以判断: undefined和null

问题

  1. undefined与null的区别?

    • undefined原理上来说就是没有找到,变量没有赋值

    • null: 代表变量赋值了,只是值为null,空对象

    • 区别

      • 数据类型不一样 用typeof进行判断,null的数据类型是object,undefined的数据类型是undefined
      console.log(typeof null) // object
      console.log(typeof undefined) // undefined
      
      • null和undefined 两者相等,但是当两者做全等比较时,两者又不等
      console.log(null == undefined) // true
      console.log(null === undefined) // false
      
      • null代表"空",代表空指针;undefined是定义了没有赋值
      let x;
      console.log(x); // undefined
      
      var y = null;
      console.log(y) // null
      
  2. 什么时候将变量赋值为null?

    • 初始化赋值: 将要作为引用变量使用, 但对象还没有确定
    • 结束时: 将变量指向的对象成为垃圾对象
  3. 理解变量类型与数据类型?

    • js的变量本身是没有类型的,变量的类型实际上是变量内存中数据的类型
    • 变量类型:
      • 基本类型: 保存基本类型数据的变量
      • 引用类型: 保存对象地址值的变量
    • 数据对象
      • 基本类型
      • 对象类型

2. 数据、内存、变量

什么是数据?

  • 万物(一切)皆数据, 函数也是数据
  • 具有可读和可传递的基本特性
  • 存储于内存中代表特定信息的东西, 本质就是0101二进制
  • 程序中所有操作的目标:
    • 算术运算
    • 逻辑运算
    • 赋值
    • 调用函数传参

什么是内存?

  • 内存条通电后产生的存储空间(临时的)
  • 内存的空间是临时的, 而硬盘的空间是持久的
  • 分配内存: 声明变量和函数或创建对象时, JS引擎会自动为此分配一定大小的内存来存放对应的数据
    • 释放内存: 清空内存中的数据, 标识内存可以再分配使用(内存不释放就不能复用)
    • 自动释放: 栈空间的局部变量
  • 垃圾回调器回调: 堆空间的垃圾对象
  • 一块内存包含2个数据
    • 内部存储的数据(一般数据/地址数据)
    • 内存地址值数据
  • 内存分类
    • 栈: 全局变量, 局部变量 (空间较小)
    • 堆: 对象 (空间较大)

什么是变量?

  • 一个变量对应一块小内存, 变量名用来查找到内存, 变量值就是内存中保存的内容
  • 值可以变化的量, 由变量名与变量值组成

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

  • 变量是内存的标识, 我们通过变量找到对应的内存, 进而操作(读/写)内存中的数据
  • 内存是一个容器, 用来存储程序运行需要操作的数据