Day 1
- JS 中,不管你
export default了些啥,导出的都是整个.js文件,同理无论你引入的是啥,都引入了整个文件。体现在,被导入文件中本来要执行的的函数都会执行,而整个文件的代码都会执行(你只能访问到那些被export这是为访问模块中的变量提供接口export暴露的变量)。
Day 2
-
数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。硬件可以保证。
时间复杂度扩展
数组中
操作 时间复杂度 删除与添加 O(n) 随机读取 O(1) 链表中
操作 时间复杂度 删除与插入 O(1) 随机读取 O(n) 数组的随机访问的实现:当你访问 nums[n],数组会按照下面的公式寻找地址
nums[n] = *(nums+ n)时间复杂度 O(1) -
备忘:
求数组长度
C/C++:
sizeof(nums)/sizeof(nums[0])
C++:nums.length()
Java/JavaScript:nums.length
DAY 3
- 关于
promise或者async/await或者回调函数式等异步编程方法,只当你需要实现同步时才使用
DAY 4
-
关于
全局状态管理与跨页面/组件间通讯,普遍的说法是,当页面变得复杂时,才需要使用全局状态管理;而页面逻辑简单的,用“一般的方法”即可,而所谓一般的方法:React中(除了让状态和它的回调函数穿越层层组件),一般指使用useContext配合<Provider/>创建一定范围内(乃至全局)的上下文,实现范围内的组件共享状态。Vue中,貌似是有一个叫EventBus/事件总线的东西,可以将其挂载到全局,实现两个组件间的通信(我并没有用过 Vue ,可能有纰漏)。
之所以把全局状态管理与跨页面/组件间通讯分割开来,大概是因为全局状态管理的构建,一般的方案如:
Reudx,Vuex等都不可避免地有些复杂,用在简单的跨页面/组件间通讯上,确实有杀鸡用牛刀的意思。但是,其实二者的实现所用到的原理都是相同的,即状态提升。最近在项目中使用到
Recoil和Jotai,作为全局状态管理工具,使用起来却十分快捷,再也不用创建一个全局的store,而是直接在函数外声明一个状态容器Atom,它会将状态提升到全局,组件内可以直接通过相应的hook“钩取”数据,十分方便。不知道这会不会让全局状态管理与跨页面/组件间通讯的形式趋于统一。 -
组件与状态共享,如果组件只是对状态做出改动,那么它对状态并不依赖;而一旦使用了状态,状态就将代替原来某个state的作用。 -
不用
localStorage做全局状态管理的原因(因为之前接触过这样的项目):- 数据并非响应式
- 数据可以通过
DevTools篡改,比较脆弱