柯森(Cosen)
柯森(Cosen)
## 作用域 作用域是指程序源代码中定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 `JavaScript` 采用词法作用域,也就是静态作用域。 ## 静态作用域与动态作用域 因为 `JavaScript` 采用的是词法作用域,函数的作用域在函数定义的时候就决定了。 而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。
回答这个问题,我们先要概括的回答一下`Vue生命周期`是什么: `Vue` 实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模版、挂载 `Dom` -> 渲染、更新 -> 渲染、卸载等一系列过程,我们称这是 `Vue` 的生命周期。 下面的表格展示了每个生命周期分别在什么时候被调用: | 生命周期 | 描述 | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `beforeCreate` | 在实例初始化之后,数据观测(`data observer`) 之前被调用。 | | `created`...
题目如下: ```js new Queue().task(1000, function () { console.log(1); }).task(2000, function () { console.log(2); }).start() ```
方案1: ```js function Queue1() { this.queue = [] this.task = (time, fn) => { this.queue.push({fn, time}) return this } this.start = () => { let deffer = 0 for (let...
## 什么是`TCP`? `TCP` 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在`TCP/IP`协议中,`TCP`协议提供可靠的连接服务,连接是通过`三次握手`进行初始化的。 同时由于`TCP`协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,`TCP`是`全双工模式`,所以需要`四次挥手`关闭连接。 ## TCP 包头格式 > 图片来源网络  `TCP`首部承载这`TCP`协议需要的各项信息,下面我们来分析一下: - `TCP`端口号 `TCP`的连接是需要四个要素确定唯一一个连接:(源`IP`,源端口号)+ (目的`IP`,目的端口号) 所以`TCP`首部预留了两个 16 位作为端口号的存储,而`IP`地址由上一层`IP`协议负责传递。 源端口号和目地端口各占 16 位两个字节,也就是端口的范围是`2^16=65535` - `TCP`的序号和确认号 - 32 位序号`seq` `Sequence number`...
具体实现讲解可参考[这里](https://juejin.im/post/6844903625769091079) ```js const PENDING = "PENDING"; const RESOLVED = "RESOLVED"; const REJECTED = "REJECTED"; const resolvePromise = (promise2, x, resolve, reject) => { console.log(promise2); if (promise2 === x) { //...
```js Function.prototype.apply2 = function (context, arr) { var context = context || window; context.fn = this; var result; if (!arr) { result = context.fn(); } else { var args =...
```js Function.prototype.call2 = function (context) { var context = context || window; context.fn = this; var args = []; for (var i = 1, len = arguments.length; i < len;...
参考冴羽大佬实现: ```js Function.prototype.bind2 = function (context) { if (typeof this !== "function") { throw new Error( "Function.prototype.bind - what is trying to be bound is not callable" ); } var...
文件指纹对应的其实就是`hash`: - `Hash`:和整个项目的构建相关,只要项目文件有修改,整个项目构建的 hash 值就会更改 - `Chunkhash`:和 webpack 打包的 chunk 有关,不同的 entry 会生成不同的 chunkhash 值 - `Contenthash`:根据文件内容来定义 hash,文件内容不变,则 contenthash 不变 来看下这三种 hash 在 webpack 里面怎么配置: ```js module.exports = { entry:...