头图

SegmentFault 思否技术周刊 Vol.73 — 如何有效地学习 JavaScript ?

本期技术周刊一起了解 Javascript,欢迎大家阅读 ~

文章推荐

手写一个同步服务端时间的小工具 // jump__jump

在前端开发的过程中,开发者经常会用到 new Date() 来获取当前时间,但是 new Date() 是获取的当前操作系统的时间,由于用户可以修改当前电脑时间,所以它是不准确的。

大部分情况下,用户修改当前电脑时间都没有什么问题,但是当我们需要根据服务端传递的数据时间与当前时间进行计算时,前端展示就会出错。同时,需要过期时间的数据(时间)存入前端缓存( localStorage, IndexedDB )中也是会出现问题。

这时候我们考虑使用服务器提供的时间,而不是前端时间。服务器每次进行数据交互时都会在响应头提供时间数据。我们可以通过该数据修正前端时间。

JavaScript 进阶之路 --- 《手写“回调地狱”》 // FFF方

我相信有很多学习前端的小伙伴百分百遇到过这样的面试题:

---“为什么我们要用 Promise 去代替传统的回调函数?”

我相信有很多人都可以随口回答出:“为了避免回调地狱,因为回调地狱会带来xxx的后果....”

ok,那么现在我问你,假设现在面试官让你实现一个 “回调地狱”。你脑子里的代码会是怎样的呢?我建议你停下来思考三分钟🤔...

不要问为什么有这么令人无语的问题,因为这就是我实实在在的面试题之一。起初我觉得面试官在刁难我,然而当我真正理解了这个知识点以后,我非常感谢那位面试官,在去研究这个面试题答案的过程中,让我对 JS 有了更深层次的理解...所以在手写 Promise 之前,我希望你能先完成手写 回调地狱。

JavaScript 判断数组的方法总结,哪种最靠谱? // 前端阿飞

无论在工作还是面试中,我们都会遇到判断一个数据是否为数组的需求,今天我们就来总结一下,到底有多少方法可以判断数组,看看哪种方法是最好用、最靠谱的。

我们可以从构造函数、原型对象、Object 的原型对象三个角度来进行判断!

常见 JavaScript 设计模式 — 原来这么简单 // 熊的猫

设计模式总共有 23 种,但在前端领域其实没必要全部都去学习,毕竟大部分的设计模式是在 JavaScript 中占的比重并不是那么大,本文会列举出一些 JavaScript 常见的、容易被忽视的设计模式,不过还是有必要先简单了解一下设计模式相关的概念。

先举个形象的例子,比如现在正在考试而且恰好在考数学,实际上每道数学题目都对应着一种或多种解决公式(如和三角形相关的勾股定理),而这些解决公式是经过数学家研究、推导、总结好的,我们只需要把题目和已有公式对应上就很容易解决问题,而设计模式也是如此,只不过是它是相对于软件设计领域而言的。

设计模式(Design pattern) 是一套被反复使用、经过分类、代码设计经验的总结,简单来说设计模式就是为了解决,软件设计领域,不同场景下相应问题的,解决方案。

JavaScript 学习笔记(一) promise 和 async/wait // 北冥有只鱼

JavaScript 也有异步任务,如果我们想协调异步任务,就可以选择使用 Promise,当前的我们只有一个异步任务,我们希望在异步任务回调,那么可以在用 Promise.then,如果你想关注错误结果,那么可以用 catch,如果你想在任务完成之后做一些清理工作,那么可以用 Promise 的 finally。
现在我们将异步任务的数目提升,提升到三个,如果我们想再这三个任务完成之后触发一些操作,那么我们可以用 Promise.all,但是但 Promise.all 的缺陷在于,一个任务失败之后,我们看不到成功任务的结果,如果任务成功与失败的结果,那么就可以用 Promise.allSettled。但有的时候我们也指向关注“第一名”,那就用 Promise.race,但有的时候我们也只想要没犯规的第一名,这也就是 Promise.any。有的时候我们也不想用 then 回调的这种方式,这写起来可能有点烦,那就可以用 async/await 。

问答推荐

关于 JavaScript 的问题,还有未解决的,欢迎正在阅读的小伙伴们一起来解决!


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

如有问题可以添加小姐姐微信~

image.png


SegmentFault_社区周刊
主题技术周刊,每周分享新鲜有趣的技术干货。
avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

869 声望
2.1k 粉丝
0 条评论
推荐阅读
SegmentFault 思否技术周刊 Vol.80 — 玩转新时代前端构建工具
Vite 提供了一套原生 ESM 的 HMR API。 具有 HMR 功能的框架可以利用该 API 提供即时、准确的更新,而无需重新加载页面或清除应用程序状态。Vite 内置了 HMR 到 Vue.js 单文件组件(SFC)和 React Fast Refresh 中。

Beverly5阅读 1.6k

封面图
安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城31阅读 7.2k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco20阅读 2.1k评论 2

在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 1.9k

封面图
【已结束】SegmentFault 思否写作挑战赛!
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑战,向更好的自己前进!

SegmentFault思否20阅读 5.6k评论 10

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.7k评论 3

封面图
Vue2 导出excel
2020-07-15更新 excel导出安装 {代码...} src文件夹下新建一个libs文件夹,新建一个excel.js {代码...} vue页面中使用 {代码...} ===========================以下为早期的文章今天在开发的过程中需要做一个Vue的...

原谅我一生不羁放歌搞文艺14阅读 19.9k评论 9

avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

869 声望
2.1k 粉丝
宣传栏