From 2c80fd1e45fe1ce528ef7d5ff56a644eb2502dd5 Mon Sep 17 00:00:00 2001 From: xjq Date: Mon, 29 Apr 2024 16:08:13 +0800 Subject: [PATCH] update --- docs/Knowledge/Base.md | 32 +++++++++++++++++++++++++++++--- docs/Knowledge/Css.md | 2 ++ docs/Knowledge/Js.md | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/docs/Knowledge/Base.md b/docs/Knowledge/Base.md index 8cfdd7e..2e927ac 100644 --- a/docs/Knowledge/Base.md +++ b/docs/Knowledge/Base.md @@ -1,11 +1,37 @@ [[toc]] +# 数据结构 + ## 图论 -### 深搜 +### 最短路径 -### 广搜 +- [2385. 感染二叉树需要的总时间](https://leetcode.cn/problems/amount-of-time-for-binary-tree-to-be-infected/) -最短路径 +先走 深搜 构造无向图 +然后从 start 节点开始走 广搜 寻找最短路径 ## 二叉树 + +## 多叉树 + +## 数组 + +## 链表 + +### 双链表 + +- [146. LRU 缓存](https://leetcode.cn/problems/lru-cache/description/) + +构造双链表存储节点, 每新增一个新数添加到头部, 已存在则更新 value 以及移动到头部 +构造 map 存储每个链表节点, 方便在 get 时直接取到对应链表节点, 然后做移动到头节点动作 + +# 算法 + +## 双指针 + +## 哈希表 + +n 数之和 + +## 单调栈 diff --git a/docs/Knowledge/Css.md b/docs/Knowledge/Css.md index ffea1e9..fefc9c0 100644 --- a/docs/Knowledge/Css.md +++ b/docs/Knowledge/Css.md @@ -345,3 +345,5 @@ devicePixelRatio 的官方定义:设备物理像素和设备独立像素的比 2. 和块级元素类似,行内块元素可以容纳其他元素,也可以被其他元素所包含 3. 行内块元素不会导致文本换行,可以在同一行内显示多个行内块元素 + +## 选择器 diff --git a/docs/Knowledge/Js.md b/docs/Knowledge/Js.md index 23595ae..b4bcf2b 100644 --- a/docs/Knowledge/Js.md +++ b/docs/Knowledge/Js.md @@ -1,7 +1,5 @@ [[toc]] -## 闭包 - ## this 绑定规则 ### 1. 默认绑定:根据函数调用位置 @@ -69,6 +67,37 @@ foo.call(obj) ### 5. 箭头函数:箭头函数的 this 是在定义函数时绑定的,不是在执行过程中绑定的 +闭包是指有权访问另一个函数作用域中的变量的函数 + +### 定时器与闭包 + +下面这段程序会打印 4, +var 存在变量提升问题, 导致 callback 引用的是全局作用域下的 i +for 循环在当前事件循环一次执行完将 i 修改为 4 +然后执行下一个事件循环的 setTimeout callback 取到了全局作用域的 i + +```js +for (var i = 0; i < 5; i++) { + setTimeout(() => { + console.log(i) + }, 1000) +} +``` + +## 闭包 + +通过闭包创建块级作用域, 可以打印 0 1 2 3 4 + +```js +for (var i = 0; i < 5; i++) { + ;(function () { + setTimeout(() => { + console.log(i) + }, 1000) + })(i) +} +``` + ## 事件循环 ### Node