【JavaScript】Promise(零) —— 准备工作(实例对象、函数对象、回调函数分类、捕获抛出错误)

简介: 【JavaScript】Promise(零) —— 准备工作(实例对象、函数对象、回调函数分类、捕获抛出错误)

一、实例对象和函数对象

1. 函数对象

将函数作为对象使用时,简称为函数对象。

2. 实例对象

new 构造函数或类产生的对象,称之为实例对象。

3. 举例
  // 函数对象
  function Person(name, age){
        this.name = name
        this.age = age
    }
    Person.a = 1  // 将Person看成一个对象
    const p1 = new Person('小宏', 22) //p1是Person的实例对象
    console.log(p1)

8c0073a25d474fdea93115a4dc87cb94.png

二、回调函数的分类

1. 什么是回调?

我们定义的,我们没有调用,最终执行了

2. 同步回调函数
  1. 理解:立即在主线程上回调,不会放入回调队列中。
  2. 例子:数组遍历相关的回调函数 / Promise的executor函数
  let arr = [1, 3, 5, 7, 9]
    arr.forEach((item)=>{
        console.log(item);
    })
    console.log('主线程的代码');

同步的回调:按顺序执行

11893c1c7222444087a24ecb023bf8e0.png

3. 异步回调函数
  1. 理解:不会立即执行,会放入回调队列中以后执行
  2. 例子:定时器回调 / ajax回调 / Promise的成功、失败的回调
  setTimeout(()=>{
        console.log('@');
    }, 1000)
    console.log('主线程的代码');

同步的回调:按队列执行

064d1569cbb34ba687950f024d0c89ff.png

三、JS 中的 Error

1. 错误类型

Error:所有错误的父类型

  1. ReferenceError:引用的变量不存在
  console.log(a);

没有定义,直接输出

1633293696f44532ac36f24b5f69c9df.png

  1. TypeError:数据类型不正确
  const demo = () => {} 
    demo()()

demo() 为undefined,undefined() 为类型错误

75bf341e9bf34875b674f6f7bf4430be.png

  1. RangeError:数据值不在其所允许的范围内——死循环
  const demo = () => {demo()}
    demo()

死循环,队列栈已满

d30c113c716b43719a06f229c58ff218.png

  1. SyntaxError:语法错误
  console.log(1;

语法错误,丢失了半个括号

4fa8d0cc2b424793a20952efeb121c4c.png

2. 捕获错误

捕获错误:使用 try{} catch{}

  try {
        console.log(1);
        console.log(a);
        console.log(2);
    } catch (error) {
        console.log('代码执行错误,错误原因:', error);
    }

使用异常捕获,错误不飘红


a4d55465eef9407f8d5d91597283ef5d.png

3. 抛出错误

抛出错误:throw error

  function demo() {
        const date = Date.now()
        if (date % 2 === 0) {
            console.log('偶数,可以正常工作');
        } else {
            throw new Error('奇数,不可以工作')
        }
    }
    try {
        demo()
    } catch (error) {
        console.log('@', error);
    }

获取时间戳,偶数可工作,奇数不可工作

1faa76b165c041ea838029cb7d41ebf2.png

8be0bd6cbdab4b4fa06541a19fe52d19.png

不积跬步无以至千里 不积小流无以成江海

相关文章
|
4天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
17 3
|
17天前
|
JavaScript
JS 获取对象数据类型的键值对的键与值
JS 获取对象数据类型的键值对的键与值
|
24天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
20天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
4天前
|
JavaScript 前端开发
js开发:请解释什么是ES6的Generator函数,以及它的用途。
ES6的Generator函数是暂停/恢复功能的特殊函数,利用yield返回多个值,适用于异步编程和流处理,解决了回调地狱问题。例如,一个简单的Generator函数可以这样表示: ```javascript function* generator() { yield 'Hello'; yield 'World'; } ``` 创建实例后,通过`.next()`逐次输出"Hello"和"World",展示其暂停和恢复的特性。
15 0
|
6天前
|
JavaScript 前端开发 开发者
JavaScript中的错误处理:try-catch语句与错误对象
【4月更文挑战第22天】JavaScript中的错误处理通过try-catch语句和错误对象实现。try块包含可能抛出异常的代码,catch块捕获并处理错误,finally块则无论是否出错都会执行。错误对象提供关于错误的详细信息,如类型、消息和堆栈。常见的错误类型包括RangeError、ReferenceError等。最佳实践包括及时捕获错误、提供有用信息、不忽略错误、利用堆栈信息和避免在finally块中抛错。
|
11天前
|
缓存 JavaScript 前端开发
js的入口函数,入口函数的作用
js的入口函数,入口函数的作用
15 4
|
11天前
|
JavaScript
【Js】检查Date对象是否为Invalid Date
【Js】检查Date对象是否为Invalid Date
15 0
|
12天前
|
存储 JavaScript 前端开发
JavaScript的引用数据类型主要包括对象
【4月更文挑战第16天】JavaScript的引用数据类型主要包括对象
17 4
|
15天前
|
JavaScript 前端开发
【掰开揉碎】JavaScript状态机的应用场景与实例(二)
【掰开揉碎】JavaScript状态机的应用场景与实例(二)