JavaScript进阶(一):基础总结

一、数据类型相关知识点

1、基本(值)类型

  • String: 任意字符串
  • Number: 任意的数字
  • Boolean: true/false
  • Undefined: undefined
  • Null: null 。使用typeof时返回object
  • Symbol:(ES6新增)。表示独一无二的值,最大的用法是用来定义对象的唯一属性名
  • BigInt:(ES10新增)。 BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数

2、对象(引用)类型

  • Object: 任意对象
    • Function: 一种特别的对象(可以执行) --内部包含可运行的代码
    • Array: 一种特别的对象(key为数值下标属性, 内部数据是有序的)

3、判断方法

  • typeof

    • typeof 操作符返回一个字符串,表示未经计算的操作数的类型。
    • 可以判断: undefined/ 数值 / 字符串 / 布尔值 / function
    • 不能判断: nullobjectarray
  • instanceof

    • 专门判断对象的具体类型
    • instanceof 运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上
  • ===

    • 全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换
    • 可以判断: undefinednull

4、相关问题

  • undefinednull的区别?
    • undefined代表定义未赋值
    • null定义并赋值了, 只是值为null

  • 什么时候给变量赋值为null呢?
    • 初始赋值, 表明将要赋值为对象,可以用做约定俗成的占位符
    • 结束前, 让对象成为垃圾对象(被垃圾回收器回收)

二、数据、变量、内存的理解

1、什么是数据?

  1. 存储在内存中代表特定信息的’东西’, 本质上是0101…
  2. 数据的特点: 可传递, 可运算
  3. 一切皆数据, 函数也是数据
  4. 在内存中的所有操作的目标: 数据

2、什么是变量?

  1. 在程序运行过程中它的值是允许改变的量
  2. 一个变量对应一块小内存, 它的值保存在此内存中

3、什么是内存?

  1. 内存条通电后产生的可储存数据的空间(临时的)
  2. 一块内存包含2个方面的数据:内部存储的数据地址值数据
  3. 内存分类
    • 栈空间: 全局变量和局部变量
    • 堆空间: 对象

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

  • 内存用来存储数据的空间
  • 变量是内存的标识

5、相关问题

  • 关于赋值和内存的问题
    let a = xxx, a内存中到底保存的是什么?
    • xxx是基本数据, 保存的就是这个数据
    • xxx是对象, 保存的是对象的地址值
    • xxx是一个变量, 保存的是xxx的内存内容的复制(可能是基本数据, 也可能是地址值)

  • 关于引用变量赋值问题
    • 2个引用变量指向同一个对象, 通过一个变量修改对象内部数据, 另一个变量看到的是修改之后的数据
    • 2个引用变量指向同一个对象, 让其中一个引用变量指向另一个对象, 另一引用变量依然指向前一个对象

  • JS引擎如何管理内存?
    • 内存生命周期
      • 分配小内存空间, 得到它的使用权
      • 存储数据, 可以反复进行操作
      • 释放小内存空间
    • 释放内存
      • 局部变量: 函数执行完自动释放
      • 对象: 成为垃圾对象后垃圾回收器回收

三、对象

1、对象的概念

  • 什么是对象?
    • 多个数据(属性)的集合
    • 用来保存多个数据(属性)的容器
    • 一个对象代表现实中的一个事物

  • 为什么要用对象?
    • 统一管理多个数据

  • 对象的组成
    • 属性: 属性名(字符串)和属性值(任意)组成
    • 方法: 一种特别的属性(属性值是函数)

2、访问对象内部数据

  • .属性名: 编码简单, 有时不能用
  • ['属性名']: 编码麻烦, 能通用
    • 当属性名有特殊字符/属性名是一个变量时,只能使用['属性名']的方式

四、函数

1、函数的概念

  • 什么是函数?
    • 实现特定功能的n条语句的封装体
    • 只有函数是可以执行的, 其它类型的数据不能执行

  • 为什么要用函数?
    • 提高代码复用
    • 便于阅读交流

  • 如何定义函数?
    • 函数声明
    • 表达式
  function fn1 () { console.log('fn1()' )//函数声明            
  const fn2 = function () { console.log('fn2()' )  //表达式

2、如何调用(执行)函数

  • fun(): 直接调用
  • obj.fun(): 通过对象调用
  • new fun(): new调用
  • fun.call/apply(obj): 临时让test成为obj的方法进行调用

3、回调函数

  • 什么是回调函数?
    • 你定义的
    • 你没有调
    • 但最终它执行了(在某个时刻或某个条件下)

  • 常见的回调函数
    • dom事件回调函数
    • 定时器回调函数
    • ajax请求回调函数
    • 生命周期回调函数

4、IIFE(自调用函数)

  • 全称: Immediately-Invoked Function Expression 自调用函数
  • 作用:
    • 隐藏实现
    • 不会污染外部(一般指全局)命名空间
    • 用它来编码js模块
  • 示例:
  (function () { //匿名函数自调用
    var a = 3
    console.log(a + 3)
  })()
  console.log(a) // a is not defined

5、函数中的this

  • this是什么?
    • 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
    • 所有函数内部都有一个变量this
    • 它的值是调用函数的当前对象

  • 如何确定this的值?
    • fun(): window
    • obj.fun(): obj
    • new fun(): 新创建的对象
    • fun.call(obj): obj
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激洪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值