当前位置: 首页 > ai >正文

javascript 补充的一些知识点

函数对象与实例对象

  • 函数对象
    将函数作为对象使用时,简称为函数对象
  • 实例对象
    new 函数产生的对象,简称为对象
function Fn(){  //Fn 函数}
const fn= new Fn(); //此时的Fn是构造函数 ,fn 是实例对象(简称对象)
console.log(11,Fn.prototype) // Fn是函数对象
Fn.bind({}) // 这个是函数对象调用的方法

JS 的error 处理

类型

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

错误处理

  • 捕获错误
try{}catch(e){
}
  • 抛出错误
throw 

错误对象

  • message属性
    错误相关信息
  • stack属性
    函数调用栈记录信息

JS 异步之宏队列与微队列

在这里插入图片描述
在 JavaScript 的异步机制中,宏队列(Macro Task Queue) 和 微队列(Micro Task Queue) 是两个非常重要的概念,它们决定了异步代码的执行顺序。

事件循环(Event Loop)

JavaScript 是单线程的,它通过 事件循环(Event Loop) 来处理异步任务。事件循环的大致过程如下:
1. 执行全局同步代码(主线程执行栈)。
2. 清空 微队列。
3. 执行一个 宏任务(从宏队列取出)。
4. 清空 微队列。
5. 重复 3-4。

微队列(Micro Tasks)

常见的微任务来源:
• Promise.then / catch / finally
• MutationObserver
• queueMicrotask

微任务的特点是:在当前宏任务执行完后立即执行,优先级高于宏任务中的其他异步任务。

宏队列(Macro Tasks)

常见的宏任务来源:
• setTimeout
• setInterval
• setImmediate(Node.js)
• MessageChannel
• I/O 操作
• requestAnimationFrame(浏览器专用)

宏任务的特点是:每轮事件循环只会执行一个宏任务,之后才会执行微任务。

执行顺序示例

下面是一个典型的例子:

console.log('start');setTimeout(() => {console.log('setTimeout');
}, 0);Promise.resolve().then(() => {console.log('promise');
});console.log('end');

执行顺序解析:
1. 输出 ‘start’
2. 注册 setTimeout(宏任务)
3. 注册 promise.then(微任务)
4. 输出 ‘end’
5. 清空微队列,输出 ‘promise’
6. 执行 setTimeout 回调,输出 ‘setTimeout’

最终输出顺序:

start
end
promise
setTimeout

在这里插入图片描述

http://www.xdnf.cn/news/4906.html

相关文章:

  • HarmonyOS学习——ArkTS与TS的关系
  • ArcScroll: 弧形滑动控件
  • 初等数论--欧拉函数积性的证明
  • Uniapp Android/IOS 获取手机通讯录
  • 【Linux】自定义shell的编写
  • vllm的技术核心、安装流程和使用教程,以及注意事项
  • 自主独立思考,帮我创造新的方法:vue3 script setup语法中,组件传递值我觉得有些复杂,帮我创造一种简单的方法容易写的方法?
  • 使用Java实现HTTP协议服务:从自定义服务器到内置工具
  • 数据加密方式(对称加密/非对称加密 /数字签名/证书)
  • vue项目的创建
  • 字符串---Spring字符串基本处理
  • 耳机插进电脑只有一边有声音怎么办 解决方法分享
  • 第十六届蓝桥杯B组第二题
  • 什么是分布式光伏系统?屋顶分布式光伏如何并网?
  • 高质量老年生活:从主动健康管理到预防医学的社会价值
  • 在 Spring Boot 中选择合适的 HTTP 客户端
  • 2025年社交APP安全防御指南:抵御DDoS与CC攻击的实战策略
  • NLP基础
  • 支付宝 SEO 优化:提升小程序曝光与流量的完整指南
  • Kotlin中Lambda表达式和匿名函数的区别
  • RabbitMQ消息的重复消费问题如何解决?
  • jenkins 启动报错
  • 从粗放管控到数字治能——安科瑞智能监测系统助力污水厂能耗下降15%+
  • 如何通过C# 获取Excel单元格的数据类型
  • YOLO算法的基本介绍
  • 【react组件】矩形框选小组件,鼠标左键选中 div,键盘 ESC 清空
  • 【Axios】解决Axios下载二进制文件返回空对象的问题
  • 高性能Python Web 框架--FastAPI 学习「基础 → 进阶 → 生产级」
  • [Linux网络_70] ARP协议 | RARP | DNS | ICMP协议
  • 无人机电池储存与操作指南