本期技术周刊一起了解 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 的问题,还有未解决的,欢迎正在阅读的小伙伴们一起来解决!
- js 用 return 中断函数后怎么继续执行 ?
- 如何把一堆 js 执行结果封装成一个 json 给外界访问 ?
- 如何使用纯 js 代码校验 email 地址(非正则表达式) ?
- 多维数组如何通过 id 查找 ?
- js 根据结果改变原数组,组成新数据 ?
- js 的 replace 怎么只执行一次 ?
- JS 转换 HTML 结构 ?
- JS 数组如何指定分割 ?
- 遇到这种情况怎么写更优雅 ?
# SegmentFault 技术周刊 #
「技术周刊」是社区特别推出的技术内容系列,一周一主题。
每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。
如有问题可以添加小姐姐微信~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。