0427 手打基础丸

手打基础丸 🧆 => 精选基础知识,经过多道工序精心制作而成,口感鲜嫩多汁。一口咬下,香气四溢,加上传统前端风味,令人回味无穷...... 助力食用者厚积薄发,夯实根基进阶上层。

JS的临时性死区(TDZ)?

ES6中新增的let和const关键字所定义的变量不能在定义之前使用

原理:是let和const的声明不会被变量提升,相对的var会变量提升也就没有暂时性死区

目的:是为了防止变量在未初始化之前被访问,确保代码的真实性和可靠性

JS事件轮询机制(事件循环)?

事件轮询机制也称为事件循环,是一种运行机制,JS采用该机制来解决单线程的一些问题

JS会将编写的代码放入执行栈中依次执行

遇到异步任务 就交给其他线程执行(浏览器中各种WEB API)

异步任务 执行完成之后产生的回调会被放入对应的任务队列(micro/macro task queen)中

待所有同步代码执行完成 之后执行栈为空则会检测task queen中是否有待执行任务,有则取回执行

若其中还有异步任务则继续循环

javascript 复制代码
// 举个例子见下
setTimeout(()=>{
  console.log('1')
   Promise.resolve().then(()=>{
        console.log('2');
    })
})

console.log('3')

new Promise((resolve, reject)=>{ 
  console.log('4');
  resolve(5) 
}).then((data)=>{ console.log(data) })
.then(()=>{ console.log('6') })

console.log('7')

setTimeout(()=>{
    console.log('8');    
},1000)

// 以上代码执行结果是 3 4 7 5 6 1 8 2

执行同步序列代码==》执行微任务队列代码==》执行宏任务队列中的回调函数

宏任务和微任务?

宏任务(macrotask)通常有:setTimeout、setInterval、setImmediate(node.js中)、requestAnimationFrame(浏览器)、I/O、UI rendering(浏览器)

微队列(microtask)通常有:process.nextTick(Node)、Promise、Object.observe、MutationObserver

JS原型链?

JS中通过原型链来实现继承

显示原型 :每个函数都有一个prototype属性,指向他的原型对象

隐式原型 :每个对象都有一个proto属性,指向他的构造函数的原型对象,可以直接调用来查看原型对象,由此形成原型链

每个原型对象上都有一个constructor 属性,指向他的构造函数,与proto对应

原型链的最终指向为Object.prototype,Object.prototype的__proto__指向null

相关推荐
骑着蜗牛撵大象3278 分钟前
豆包 Seed 驱动的记账智能体:从拍票抽取到月报生成的全链路落地记录
java·前端·javascript·结构化输出·豆包seed·多模态识别·记账系统
溪语流沙10 分钟前
【Web全栈进阶】前端世界观:现代工具链与框架为什么存在
前端·javascript·vue.js
kyriewen32 分钟前
我逐个测了 JSON.stringify 的 7 个坑:第 1 个就在丢数据
前端·javascript·程序员
积流成海1 小时前
用代码实现哈希计算器:Web Crypto API 实战
前端·算法·哈希算法·哈希函数·盘子工具站
data analyse 4561 小时前
服务端访问日志聚合 PV 与 UV 怎么实现?日志采集与口径设计
大数据·前端·数据分析
JavaGuide1 小时前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
小羊没烦恼!1 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Eiceblue2 小时前
使用 Python 实现 Excel 行列转置(保留单元格样式)
前端·python·excel
西西学代码2 小时前
像素和颜色之间的转换(Flutter)
前端·javascript·flutter
茶底世界之下3 小时前
羽毛颜色已经很鲜艳,还要继续加色吗?用 Awaking 试一次减饱和
前端·ios·运营