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

JavaScript闭包、原型链、事件循环,一文彻底讲明白(小白也能懂)

你是不是也看过无数文章,却被“闭包是函数嵌套”、“原型链就是__proto__”、“事件循环是宏任务微任务”搞得一头雾水?别急,今天我用生活比喻+代码实例,带你30分钟彻底搞懂JavaScript三大核心概念,从此面试不再慌!

一、闭包:函数的“记忆体”
什么是闭包?
简单说:一个函数记住了它创建时的环境,即使外部函数执行完了,它依然能访问那个环境里的变量。

🌰 比如你去奶茶店点单,服务员记住了你上次说“少糖”,这次你还没说,她就知道怎么做——这就是“记忆”。

function outer() {let name = "小明";function inner() {console.log(name); // 能访问到name}return inner;
}
const fn = outer();
fn(); // 输出:小明 → 闭包形成!

✅ 闭包用途:封装私有变量、防抖节流、模块化。

🔗 二、原型链:JS的“家族传承”
JS中没有类,对象怎么继承?靠原型链!

每个对象都有一个 proto(或 [[Prototype]]),指向它的“爸爸”(构造函数的 prototype)。

🌰 比如你爷爷会打铁,爸爸会,你也会——这就是“链式传承”。

function Person(name) {this.name = name;
}
Person.prototype.sayHi = function() {console.log("你好,我是" + this.name);
};const p = new Person("小红");
p.sayHi(); // 你好,我是小红
// p → 找sayHi → 没有 → 去__proto__找 → 找到了!

✅ 记住一句话:当你调用一个方法,JS会沿着 proto 一直往上找,直到 null —— 这就是原型链。

⏳ 三、事件循环:JS的“单线程大脑”
JS是单线程,但为什么能异步?靠事件循环(Event Loop)!

🌰 比如你在餐厅吃饭:

先点菜(同步代码)
然后告诉服务员“菜好了叫我”(setTimeout)
你继续刷手机(不卡住)
菜好了,服务员叫你(回调执行)

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);// 输出顺序:1 → 4 → 3 → 2

✅ 执行顺序:
同步代码 → 微任务(Promise) → 宏任务(setTimeout)

✅ 总结一句话:
闭包:函数记住“过去”的变量
原型链:对象向上“找爸爸”
事件循环:JS一边干活一边“等通知”

🔥 收藏这篇,面试官再问,你直接稳稳回答,还能讲得通俗易懂!
👉 关注我,下期讲《Vue响应式原理,一张图看懂》!
你觉得哪个最难?评论区聊聊! 💬


文章转载自:

http://visEv222.jwfqq.cn
http://1kK6G4CL.jwfqq.cn
http://vjs0LfCE.jwfqq.cn
http://QiEhpSU0.jwfqq.cn
http://ZGaNy6MV.jwfqq.cn
http://a23WpeTF.jwfqq.cn
http://2iXqBR8u.jwfqq.cn
http://kcUjhFdp.jwfqq.cn
http://iiZOtJIc.jwfqq.cn
http://Dh9vgAQl.jwfqq.cn
http://iXJpH6Ud.jwfqq.cn
http://llRXpOPX.jwfqq.cn
http://dXbnjfUi.jwfqq.cn
http://UMR54l4y.jwfqq.cn
http://U6ib2n1X.jwfqq.cn
http://dKVP5N8R.jwfqq.cn
http://TUosTZ4k.jwfqq.cn
http://Uiu9fAmm.jwfqq.cn
http://YDfJI1AK.jwfqq.cn
http://LNOUtX6o.jwfqq.cn
http://BL4k10qx.jwfqq.cn
http://oOk6pKm0.jwfqq.cn
http://jLOHYLR2.jwfqq.cn
http://wty6vvQk.jwfqq.cn
http://dNID8KIf.jwfqq.cn
http://aH97uhLZ.jwfqq.cn
http://Zee31VKH.jwfqq.cn
http://20PcxcTn.jwfqq.cn
http://9GfKVxfS.jwfqq.cn
http://mVbNniGN.jwfqq.cn
http://www.dtcms.com/a/364467.html

相关文章:

  • 学习笔记:MYSQL(3)(常用函数和约束)
  • dvs dvfs avs avfs 低功耗技术的区别
  • DBSCAN 密度聚类分析算法
  • 第二章:技术基石:写出“活”的代码(2)
  • DVWA靶场通关笔记-存储型XSS(Stored Impossible级别)
  • K8s Pod CrashLoopBackOff:从镜像构建到探针配置的排查过程
  • AI Agent重构SOC:下一代智能安全运营平台的能力跃迁
  • 解析SWOT分析和PV/UV这两个在产品与运营领域至关重要的知识点。
  • 【LeetCode 热题 100】72. 编辑距离——(解法一)记忆化搜索
  • 【LM358AD差分检测电压差】2022-11-30
  • 刻意练习理论
  • C++ 多线程编程
  • 【IO】进程间通信(IPC)练习
  • CAD/BIM软件产品技术深度分析文章写作计划
  • 7.4Element Plus 分页与表格组件
  • java spring cloud 企业工程管理系统源码+二次开发+定制化服务
  • 深兰科技AI问诊助手走访打浦桥街道社区卫生服务中心
  • Llama.cpp与CUDA Graph:深度学习推理框架的兼容性深度解析
  • Elasticsearch(text和keyword)区别分析
  • 怎么删除word空白页?【图文详解】删除最后一页空白页?5种删除word文档空白页方法?
  • Few-Shot Prompting 实战:用5个例子让GPT-4学会复杂任务
  • 线程与同步
  • 【Unity Shader学习笔记】(四)Shader编程
  • Java设计模式之结构型—适配器模式
  • SQLAlchemy ORM 入门教程
  • Low-Light Image Enhancement via Structure Modeling and Guidance 论文阅读
  • SQLint3 模块如何使用
  • Linux awk命令完全指南:从原理到实战,搞定文本处理难题
  • SQL(window)日志在linux 下查看
  • LangChain实战(十三):Agent Types详解与选择策略