JavaScript 重点知识总结

本文详细总结了JavaScript中的数据类型,包括变量、常量、数据类型的本质、基本类型与引用类型,以及typeof和instanceof运算符。接着探讨了对象的创建方式、属性访问和对象的原型,讲解了原型链、原型作用及其在内存管理中的优势。此外,还讨论了预解析、作用域、闭包以及this的指向。最后,简要概述了JavaScript的异步处理机制,包括事件循环和Promise的使用。
摘要由CSDN通过智能技术生成

一、数据类型

1. 变量

  • 用来存放数据,保存的数据可以修改
  • var 、 let 声明的就是变量

2. 常量

  • 用来存放数据,保存的数据不可修改
  • const 声明的就是常量
  • const声明常量的时候必须赋初始值
  • const 声明的值类型是不允许重新赋值的
  • const 声明的引用类型,在不进行重新赋值的前提下,可以进行修改

3. 变量和常量的本质

  • 无论是变量还是常量,其本身都是数据,也需要在内存中占用内存空间,保存在内存的栈结构分区中

4. 面试:let、const、var的区别

  • let 和 const 不允许重复声明,var是可以重复声明的
  • let 和 const 没有变量提升,必须先声明后使用;var 存在变量提升,可以先使用后声明
  • let 和 const 有块级作用域,var没有

5. JS数据类型

5.1 基本(值)类型

  • Number
  • String
  • Boolean
  • null
  • undefinded
  • Symbol:唯一的数据
  • BigInt:任意精度的整数

undefined 和 null 的区别

  • undefined:定义了但没有赋值;或者没有return的函数
  • null:定义了且赋值为null
    初始值赋值为null,表明现在数据不明,但将来会赋值为对象
    结束时赋值为null:让对象成为垃圾对象,被垃圾回收器回收
  • 值类型的传递 —— 传递值
    在这里插入图片描述
  • 基本数据类型的值在栈空间中存储,如果修改了数据,则是把原来的值直接干掉,重新存放新的值

5.2 引用类型(object)

  • Object
  • Function
  • Array
  • Date
  • RegExp

当Number、String、Boolean调用方法或属性时,就会变为基本包装类型(引用类型)

  • 引用类型的传递 —— 传递的是引用(地址)
    在这里插入图片描述

  • 引用数据类型的对象在堆空间中存储,该空间的地址在栈空间中存储,如果修改栈空间存储的地址,则指向发生变化,也叫引用发生了变化,此时是在堆空间中重新指向了一个新的内存空间(存储了一个新的对象)

6. typeof 运算符

语法:

  • typeof 变量名
  • typeof(变量名)
  • 判断变量中存储的数据类型
  • typeof可以判断出的类型:String、Number、Boolean、undefined、Symbol、function
    let a = 10
    console.log(typeof a) //number
    let b = 'hha'
    console.log(typeof b) // string
    let c = true
    console.log(typeof c) // boolean
    let d = Symbol(23)
    console.log(typeof d) // symbol
    let e 
    console.log(typeof e) // undefined
    let fun = function() {
   }
    console.log(typeof fun) // function
  • typeof只能判断出是引用类型(object),但判断不出具体是哪种引用类型
  • 即:typeof不能判断 object和array、object和null
    let f = null
    console.log(typeof f) // object
    let obj = {
   
      name:'dudu'
    }
    console.log(typeof obj) // object
    let arr = [2,3,12]
    console.log(typeof arr) // object
    let date = new Date()
    console.log(typeof date) // object

7. instanceof 运算符

语法

  • 对象 instanceof 类型
  • 判断当前实例对象是否属于某种数据类型
  • 判断右侧函数的显示原型是否在左侧对象的原型链上

8. === 运算符

  1. ===:称为等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false
  2. == :称为等值符:当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较

类型转换规则:

  • 如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
  • 如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等

在这里插入图片描述

注意:NaN==NaN //返回false NaN不等于任何值
在这里插入图片描述

  • 除了判断是否等于 ==null 外,其他一律用 ===

二、对象

1. 对象是什么

  • 生活中的对象:看得到、摸得着的具体的某个事物,如:正在看视频的这个手机
  • 对象(object)是键值对(k:v)的集合,表示属性和值得映射关系

2. 对象的创建方式

2.1 字面量的形式

    let obj = {
   
      name:'哈哈',
      age:10
    }

2.2 new Object() 的形式

    let obj = new Object()
    obj.name = '嘟嘟'

2.3 工厂函数的形式

function createObject(name,age){
   
      var obj = new Object()
      obj.name = name
      obj.age = age
      return obj
    }
    var obj1 =createObject('小明',10)
    var obj2 =createObject('小红',20)
    console.log(obj1,obj2)

2.4 构造函数的形式

function Person(name,gender){
   
      this.name = name
      this.gender = gender
      this.sayHi=function(){
   
        console.log('您好,我是:'+this.name)
      }
    }
    var per = new Person('小明','男')
    per.sayHi()
    console.log(per)
  • new 做的四件事
    1. 函数体内部自动创建一个空白对象
    2. 函数的上下文(this)会指向这个对象
    3. 函数体内的语句会执行
    4. 函数会自动返回上下文对象,即使函数没有return语句
      在这里插入图片描述

2.5 通过 class 创建对象

  • class 形式中,构造器内的属性都是在实例上
  • class中的方法,如果是通过赋值符号定义的,则该方法在实例上,否则该方法是在原型上
    class Student{
   
      // 构造器,构造器中的属性都是在实例上的
      constructor(name,age,gender){
   
        this.name = name 
        this.age =age
        this.gender = gender
      }
      // 在原型上
      sayHi(){
   
        console.log(`您好,我是${
     this.name},今年${
     this.age}岁了,是${
     this.gender}`)
      }
      // 在实例上
      eat=()=>{
   
        console.log('吃东西啊')
      }
    }

    // 实例化
    const stu = new Student('dudu',18,'女')
    stu.sayHi()
    stu.eat()
console.log(stu)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值