一.Promise入门准备阶段
发布日期:2021-05-27 05:11:38 浏览次数:24 分类:精选文章

本文共 1888 字,大约阅读时间需要 6 分钟。

Promise入门准备阶段

区别实例对象和函数对象

在JS中,实例对象和函数对象是两个常见的概念,它们的理解对于掌握对象编程至关重要。

  • 实例对象:使用 new 关键字创建的对象,简称为“对象”。例如:

    const F = function () {};const f = new F();

    这里,F 是构造函数,f 是实例对象。

  • 函数对象:将函数作为对象使用时所使用的概念。函数本身也可以被当作对象,例如:

    console.log(F.prototype); // F 是函数对象F.call({}); // F 是函数对象

理解这两者的区别有助于更好地理解JS对象模型。


回调函数的两种类型

同步回调

同步回调指的是立即执行的回调函数,它不会被放入回调队列。一旦被调用,会立即完成执行任务,接着执行后续代码。

例子

const arr = [1, 2, 3];arr.forEach(item => {  console.log(item);});console.log("forEach()之后");

在这个例子中,每个回调函数在 forEach 追踪数组元素时会立即执行,完成后,下一行的 console.log 会立即执行。


异步回调

异步回调则不是立即执行的,它们会被放入回调队列中,等到事件循环完成后才执行回调函数。

例子

setTimeout(() => {  console.log("timeout callback()");}, 0);console.log("setTimeout()之后");

在这段代码中,setTimeout 会立即被执行,并将回调函数 () => { ... } 放入回调队列中。console.log("setTimeout()之后"); 会在回调函数执行前先完成。异步回调的特点是不会阻塞当前执行线程,它会等待当前线程完成任务后继续执行。


JS的错误处理

错误类型

在JS中,错误是用来报告编程错误和异常的。常见的内置错误类型包括:

  • Error:所有错误的父类型。
  • ReferenceError:引用不存在的变量。
  • TypeError:数据类型不正确。
  • RangeError:数据值超出允许范围。
  • SyntaxError:代码有语法错误。

示例

// ReferenceErrorconsole.log(a); // ReferenceError: a is not defined// TypeErrorlet b;b.xxx();// TypeError: b.xxx is not a function// RangeErrorfunction fn() {  fn();}fn();// RangeError: Maximum call stack size exceeded// SyntaxErrorconst c = "";cgmt;// SyntaxError: Unexpected string

错误处理与错误对象

JS 提供了try...catch 语法来捕获和处理错误。捕获错误可以避免应用程序崩溃,并为开发者提供调试信息。

捕获错误

try {  let d;  console.log(d.xxx);} catch (error) {  console.log(error);  console.log(error.message);  console.log(error.stack);}

上述代码会捕获 TypeError 并打印错误的信息。如果出现文件未找到错误:

try {  something();} catch (error) {  alert(error.message);}

抛出错误

function something() {  if (Date.now() % 2 === 1) {    console.log("当前时间为奇数,可以执行任务");  } else {    throw new Error("当前时间为偶数无法执行任务");  }}try {  something();} catch (error) {  alert(error.message);}

在上述代码中,something 函数会在时间为偶数时抛出错误,并被 try...catch 坓轰。


错误对象

错误对象 (error) 具有以下属性:

  • message:错误相关信息。
  • stack:函数调用栈记录,进入调试模式时可以查看调用链。
  • 这些属性为开发者提供了定位错误源的重要线索。

    上一篇:二.什么是Promise
    下一篇:React 三大属性state,props,refs以及组件嵌套的应用

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月17日 17时38分58秒