Deft Blog

「The struggle for life is endless and endless.」

React学习之hooks中的闭包问题以及解决策略,useLatest的使用

react hooks 使用中的闭包问题 案例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import { useState } from 'react' export default function () { const [count, setCount] = useState(0) useEffect(() =>...

JavaScript:scope chain, variable objects and activation objects.【译】

这篇文章讨论的是作用域链、变量对象、活动对象以及其关系的基本概念。 变量对象 当执行一个 JavaScript 函数时,除了已经创建的全局执行上下文之外,还会创建一个与该函数相关联的执行上下文。变量对象仅仅是一个存储与执行上下文相关的数据的对象。数据包括在上下文中定义的变量和函数声明。让我们考虑下面的例子: 1 2 3 4 5 6 7 8 9 function foo(){ v...

实现LRU缓存

实现 LRU 缓存 leetcode 算法题 leetcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 /** * @param {number} capacity */ var LRUCache = function (cap...

画一个三角形

画一个三角形 今天我们来画一个常用的图形(三角形)吧! 用 css 方式可以这样: 1 2 3 4 5 6 7 .triangle { width: 0; height: 0; border-bottom: 10px solid red; border-left: 10px solid transparent; border-right: 10px solid tr...

搞懂useState和useEffect学习记录

搞懂useState和useEffect 读神光的文章写的一些笔记 jsx 通过 render function 转变为 vdom. vdom 会在 schedule 安排下去 reconcile 成 fiber diff 算法就是在 reconcile 过程中 副作用函数, 也就是 useEffect, 生命周期等函数, 会在 reconcile 结束之后处理 所以 reac...

大数相加

大数相加 JS 中整数的最大安全范围可以查到是:9007199254740991 即 (2 ** 53) - 1 1 2 //Example add('9007199254740991', '1234567899999999999') // 结果为:1243575099254740990 参考代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

小游戏2048

前端练手的小项目: 2048方块 用到的技术是html + css + js + jquery 实现思路是建立一个4*4二维数组 根据不同编号的小方块计算出相对应所在位置的css样式 写出判断是否有空位,选择随机空位,产生2or4的随机数的函数 滑动时(以左滑为例),判断是否可以向左移动, 水平方向有相同数字且没有阻隔进行移动合并, 否则只移动, 更新显示获得的分数 通过js获取设备宽度按比...

实现Promise

Promise是什么, 可以手写实现Promise吗? A: Promise, 翻译过来就是承诺的意思, 承诺它过一段时间会给你一个结果。从编程讲Promise是异步编程的一种解决方案 以下来自–MDN **Promise** 对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法(handlers)。...

HTML篇

HTML前端面试题 一.HTML5的新标签 html5新增加的标签有<header>、<footer>、<aside>、<nav>、<video>、<audio>、<article>、<canvas>…等 HTML语义化就是为了让页面的内容结构化, 它具有如下优点 1.易于用...

实现Ajax

Ajax 是什么? 如何创建一个 Ajax? 我对 ajax 的理解是,它是一种异步通信的方法,通过直接由 js 脚本向服务器发起 http 通信,然后根据服务器返回的数据,更新网页的相应部分,而不用刷新整个页面的一种方法。 创建步骤: 创建xhr对象 --> 配置Ajax请求地址 --> 发送请求 --> 监听请求, 接受响应 面试手写(原生): ...