前端八股错题本
项目的之后再说,先看看偏八股类的错题。
项目基础
Cookie、localStorage、sessionStorage 区别
https://www.yuque.com/xiumubai/doc/rutss7kh6e08f0dp#gX9Cr
-
Cookie:为解决“服务端无法判断网络中的两个请求是否是同一用户发起”的问题。是最早的本地存储方式,也是一种纯文本文件。每次发起 HTTP 请求都会携带 Cookie。
HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。
浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器——如保持用户的登录状态。
Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。
特性:
- 有安全问题。(如有的网站通过 CV Cookie,不用输入账号用户名 & 密码就能登录。)
使用场景: Cookie和session结合使用。
-
LocalStorage:为解决“Cookie 不能存储较大信息”的问题(Cookie 只能存 4 kb,而 LocalStorage 可存储 5 mb)。
-
SessionStorage
-
IndexDB
……
cookie-session 方案拓展
凭证管理揭秘:Cookie-Session 与 JWT 方案的对决 - 肖卫卫 - 博客园
JWT 和 Cookie-Session 只是对授权信息存储的主体(客户端,服务端)不同,各有优势,合适场景不同,不存在谁比谁要先进的问题。
如果更深入 session 在服务器端的管理,可以看看 Java 相关:
JWT
JWT 是什麼?一次搞懂JWT 的組成和運作原理(按照顺序读完,否则会懵!)
pinia
CORS 及 跨域问题
https://www.yuque.com/xiumubai/doc/rutss7kh6e08f0dp#IV6Lw
JavaScript 基础
JS 闭包
基础概念:首先 JavaScript 中,函数内部可以直接读取全局变量。
但与此同时(反过来),函数外部不能读取到函数内部的局部变量。
- 如何在函数外部读取函数的内部变量:将函数内部的变量 / 函数值 return 出去(即所谓“通过闭包”)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function outer() {
let counter = 0;
function inner() {
counter++;
return counter;
}
return inner;
}
let fn = outer();
console.log(fn()); // 1
console.log(fn()); // 2
console.log(fn()); // 3
关于为何 JS 中可以 return 函数
各种专业文献上的”闭包”(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
普通情况下,函数内部作用域的变量,到了函数外部就会被销毁。
闭包就是:一个函数“记住”了它被创建时的作用域环境,即使这个作用域已经结束。 所以我们可以通过返回的函数来间接读写原本“外部访问不到”的局部变量。
有了大概印象后——接下来,来看看 mdn 的解释:
闭包是由捆绑起来(封闭的)的函数和函数周围状态(词法环境)的引用组合而成。
换言之,闭包让函数能访问它的外部作用域。在 JavaScript 中,闭包会随着函数的创建而同时创建。
——https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
JS 异步
JS 事件循环
JS 的单线程、多任务
计网基础
HTTP 状态码
HTTP 状态码分为 1xx、2xx、3xx、4xx、5xx 五大类。开发中我最常遇到的有:200、201、301/302、304、400、401、403、404、500、502、503、504。
其中印象比较深的是:
404,经常要写一个 404 页面。
502,它经常在我开 VPN 连校园网时出现,代表网关没能拿到上游服务的有效响应。
https://www.yuque.com/xiumubai/doc/dzkl2dmxnyu6c7st#OdNZh
- 2xx:请求处理成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误